2013-04-18 19 views
24

Ho un file che contiene 4 numeri (min, max, media, derivazione standard) e vorrei tracciarlo con gnuplot.gnuplot: traccia un file con 4 colonne tutto sull'asse y

Esempio:

24 31 29.0909 2.57451 
12 31 27.2727 5.24129 
14 31 26.1818 5.04197 
22 31 27.7273 3.13603 
22 31 28.1818 2.88627 

Se ho 4 file con una colonna, quindi posso fare:

gnuplot "file1.txt" with lines, "file2.txt" with lines, "file3.txt" with lines, "file4.txt" with lines 

E sarà tracciare 4 curve. Non mi interessa l'asse x, dovrebbe essere solo un incremento costante.

Come posso complimentarmi? Non riesco a trovare un modo per avere 4 curve con 1 file con 4 colonne, avendo solo un valore x in costante incremento.

Grazie.

+0

Un modo ho pensato di fare, è quello di mettere un conteggio incrementale a sinistra, e quindi utilizzare con 1: 2, con 1: 3 .... ma forse c'è un modo senza la colonna in più per favore? – user1777907

risposta

63

È possibile tracciare colonne diverse dello stesso file in questo modo:

plot 'file' using 0:1 with lines, '' using 0:2 with lines ... 

(... significa continuazione). Un paio di note su questa notazione: using specifica quale colonna tracciare la colonna 0 e 1 nella prima istruzione using, la colonna 0 è una colonna di pseudo che si traduce nel numero di riga corrente nel file di dati. Notare che se si utilizza un solo argomento con using (ad esempio using n) corrisponde a dire using 0:n (grazie per aver indicato che fuori mgilson).

Se la versione Gnuplot è abbastanza recente, si sarebbe in grado di tracciare tutte le 4 colonne con un ciclo for:

set key outside 
plot for [col=1:4] 'file' using 0:col with lines 

risultati:

for-loop plot

Gnuplot può utilizzare le intestazioni delle colonne per il titolo se sono nel file di dati, ad esempio:

min max mean std 
24 31 29.0909 2.57451 
12 31 27.2727 5.24129 
14 31 26.1818 5.04197 
22 31 27.7273 3.13603 
22 31 28.1818 2.88627 

e

set key outside 
plot for [col=1:4] 'file' using 0:col with lines title columnheader 

Risultati in:

for-loop plot with column headers

+5

Credo che il '0' non sia necessario in realtà ...' trama per [col = 1: 4] 'foo' usando col' - Questa è solo una FYI. In realtà preferisco la sceneggiatura con quella lì dentro. – mgilson

+0

@mgilson: buon punto, lo aggiungerò come sidenote. – Thor

+0

Grazie mille! Questo è perfetto, molto perspicace. Mi ha aiutato molto! – user1777907

11

solo aggiungere che è possibile specificare l'incremento nel ciclo for come terzo argomento. È utile se vuoi tracciare ogni ennesima colonna.

plot for [col=START:END:INC] 'file' using col with lines 

In questo caso non cambia nulla, ma in ogni caso:

plot for [col=1:4:1] 'file' using col with lines 
Problemi correlati