2016-06-03 18 views
2

Wie lese ich die Daten aus der Datei und zeichne das Rechteck? Die angegebene Textdatei hat folgendes Format bis zu 50 Reihen: x1 y1 x2 y2 x3 y3 x4 y4Ich möchte ein Rechteck mit gegebenen 4 Koordinaten in einer Textdatei in gnuplot plotten. Das Rechteck kann in einem Winkel zur x-Achse sein.

wo (x1, y1), (x2, y2), (x3, y3) und (x4, y4) sind die vier Eckpunkte des Rechtecks. Die Rechtecke haben eine zufällige Ausrichtung. Wie zeichne ich die Reihe der Rechtecke in gnuplot?

Wenn jemand mir sagen kann, wie man aus einer Datei lesen, während Set Objekt Polygon, das kann auch hilfreich sein was ich will: Objekt Polygon von zu bis zu setzen.

Oder gibt es einen anderen einfacheren Code in gnuplot? Alternativ gibt es eine Python-Lösung?

Antwort

1

Meine Gnuplot Lösung (nicht nur für Rechtecke, sondern jede Art von Polygonen):

plot 'rectal.dat' u 1:2:($3-$1):($4-$2) with vectors nohead lc 1 title 'Rectangle', \ 
'' u 3:4:($5-$3):($6-$4) with vectors nohead lc 1 notitle, \ 
'' u 5:6:($7-$5):($8-$6) with vectors nohead lc 1 notitle, \ 
'' u 7:8:($1-$7):($2-$8) with vectors nohead lc 1 notitle 

enter image description here von

-0,5 -0,5 -1 1 -0,5 2 0 1

1

Hier ist der Python-Code, um dies zu tun, wie wir besprochen haben.

Ihre Eingabedatei ist von Format:

__ __ x1 y1 x2 y2 x3 y3 x4 y4 

Der Code.

import numpy as np 
import matplotlib.pyplot as plt 

data = np.loadtxt('car.txt') 
data = [i[2:] for i in data] 
for d in data: 
    Xs = d[::2] 
    Ys = d[1::2] 
    for i in range(4): 
     if i < 3: 
      plt.plot([Xs[i],Xs[i+1]],[Ys[i],Ys[i+1]],'k-',lw=2) 
     elif i == 3: 
      plt.plot([Xs[i],Xs[0]],[Ys[i],Ys[0]],'k-',lw=2) 

plt.show()