2013-04-18 15 views
24

Mam plik zawierający 4 liczby (min., Maks., Średnia, standardowe wyprowadzenie) i chcę go narysować za pomocą gnuplot.gnuplot: wykreślenie pliku z 4 kolumnami na osi Y

Próbka:

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 

Jeśli mam 4 pliki z jednej kolumnie, to mogę zrobić:

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

I będzie wykreślić 4 krzywe. Nie dbam o oś X, powinien to być stały przyrost.

Jak mogę policzyć? Nie mogę znaleźć sposobu na 4 krzywe z 1 plikiem z 4 kolumnami, po prostu posiadającym stale rosnącą wartość x.

Dziękuję.

+0

jeden sposób myślałem o robi, jest wprowadzenie przyrostową liczyć na lewo, a następnie wykorzystać przy użyciu 1: 2, stosując 1: 3 .... ale może jest sposób bez dodatkowej kolumny? – user1777907

Odpowiedz

63

można wykreślić różne kolumny tego samego pliku tak:

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

(... oznacza kontynuację). Kilka uwag na temat tej notacji: using określa kolumnę, która ma być narysowaną, tj. Kolumnę 0 i 1 w pierwszej instrukcji using, kolumna 0 jest pseudo kolumną, która przekłada się na bieżący numer wiersza w pliku danych. Zauważ, że jeśli tylko jeden argument jest używany z using (np. using n), odpowiada on mówiącemu using 0:n (dzięki za wskazanie, że na zewnątrz mgilson).

Jeśli wersja Gnuplot jest na tyle niedawno, będzie można wykreślić wszystkie 4 kolumny z pętli for:

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

Wynik:

for-loop plot

Gnuplot można używać nagłówków kolumn dla tytułu, jeśli znajdują się w pliku danych, np .:

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 

i

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

Wyniki w:

for-loop plot with column headers

+5

Wierzę, że '0' jest niepotrzebne w rzeczywistości ...' spisek dla [col = 1: 4] 'foo' używając col' - To tylko FYI. Właściwie wolę skrypt z tym tam. – mgilson

+0

@mgilson: Dobra uwaga, dodam to jako sidenote. – Thor

+0

Dziękuję bardzo! To jest idealne, bardzo wnikliwe. Bardzo mi pomogło! – user1777907

11

Wystarczy dodać, że można określić przyrost pętli for jako trzeci argument. Jest to przydatne, jeśli chcesz wykreślić co n-tą kolumnę.

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

W tym przypadku to nic nie zmienia ale i tak:

plot for [col=1:4:1] 'file' using col with lines 
Powiązane problemy