2016-06-20 16 views
3

Ich habe eine Daten-Datei, die drei Spalten:Liniendiagramm in GnuPlot, wo die Linienstärke eine dritte Spalte in meiner Datendatei ist?

1 1.0 1 
2 1.5 2 
3 0.0 3 
4 1.2 2.5 
5 1.0 1 
6 1.1 5 

wobei die erste Spalte my X-Wert ist, die zweite Spalte ist mein Y-Wert, und die dritte Spalte ist die Linienbreite. Ich möchte für jedes Liniensegment entsprechend der dritten Spaltenlinienbreite geplottet werden.

Ich habe versucht:

plot 'file1.dat' using 1:2:3 with lines lw var 

Aber ich bekomme nicht definierte Variable: var Fehler.

Ist dies in gnuplot möglich?

Danke.

+0

Ein Liniensegment befindet sich zwischen zwei Punkten. Beide spezifizieren eine andere Linienbreite. Welcher sollte benutzt werden? – Christoph

+0

Nein in dieser Form ist das mit Gnuplot nicht möglich: Wie Christoph geschrieben hat, gibt es eine Ungewissheit, was die Linienstärke sein sollte, also interpretiert Gnuplot nicht "mit Linien lw variabel". –

Antwort

4

Wenn Sie Spalte 3 als die Linienbreite zwischen den Punkten definieren, n und n + 1 (bis. So dass der Wert der Spalte 3 der Zeile wird ignoriert) betrügen:

stat 'file1.dat' 
n=STATS_records 
plot for [i=0:0] 'file1.dat' using 1:2:(alma=$3) every ::i::i w l lc 1 lw 1 
plot for [i=0:n-1] 'file1.dat' using 1:2:(alma=$3) every ::i::i+1 w l lc 1 lw alma notitle 

OR

plot 'file1.dat' u 0:1 
n=GPVAL_DATA_X_MAX 
plot for [i=0:0] 'file1.dat' using 1:2:(alma=$3) every ::i::i w l lc 1 lw 1 
plot for [i=0:n] 'file1.dat' using 1:2:(alma=$3) every ::i::i+1 w l lc 1 lw alma notitle 

enter image description here

Sie müssen die erste plot for[i=0:0] die Variable 'alma' 'initialisieren'.

+0

Gute Lösung! Sie haben also entschieden, dass die Zeile für '[i, i + 1]' diejenige in Zeile 'i' ist, vielleicht ist es gut, sie explizit anzugeben. Als nächstes wird es eine Frage geben, konische Linien zwischen zwei Punkten zu machen! – Joce

+0

Vielen Dank für Ihre Antwort! In der Tat, Sie haben Recht, die n Punkte erstellen n-1 Segmente mit der Breite. Ich werde die 0. Breite dann als 1 betrachten. –

+0

@Joce du willst mich töten, nicht wahr? : D –

Verwandte Themen