2016-10-31 6 views
2

Plotten habe ich eine CSV-Datei mit einem folgenden Format vier Spalten (als MWE):eine Linie zwischen zwei Punkten in gnuplot

xcoord1,ycoord1,xcoord2,ycoord2 
0.1,0.2,0.4,0.3 
0.5,0.3,0.7,0.5 

Ich möchte von jedem xcoord1,ycoord1-xcoord2,ycoord2 mit gnuplot eine Linie zeichnen. Zum Beispiel würde ich in diesem Fall zwei Zeilen von 0.1,0.2 bis 0.4,0.3 und 0.5,0.3 bis zeichnen.

Wie ist es möglich?

Antwort

1

Eine Lösung wäre die Vorverarbeitung Ihrer Datei und die Generierung eines Gnuplot-Skripts, das den Befehl set arrow verwendet. Alternativ kann man die Eingabedatei direkt mit einer kleinen Vorverarbeitung darstellen. Der Trick ist, jede Zeile in der Datendatei in einem separaten Block zu überführen, z.B.

xcoord1,ycoord1,xcoord2,ycoord2 
0.1,0.2,0.4,0.3 
0.5,0.3,0.7,0.5 

in

umgewandelt werden würde
0.1 0.2 
0.4 0.3 

0.5 0.3 
0.7 0.5 

Gnuplot wird dann nur Punkte innerhalb eines Blocks verbinden. Um dies zu erreichen, könnten Sie tun:

plotCmd(fname)=sprintf("<gawk -F, 'NR>1{printf \"%%s\\t%%s\\n%%s\\t%%s\\n\\n\",$1,$2,$3,$4}' %s", fname) 
plot plotCmd('input.csv') w lp 
2

Plot die Linien als Vektoren ohne Pfeilspitzen:

plot "file" using 1:2:($3-$1):($4-$2) with vectors nohead 
Verwandte Themen