2013-09-03 14 views

Odpowiedz

32

Jeśli chcesz mieć wszystkie pliki w jednym działce, trzeba użyć plot for[... (obsługiwany od wersji 4.4). Zapętlenie kilku poleceń plot za pomocą do for (obsługiwanych tylko od wersji 4.6) działa tylko w trybie multiplot.

Poniższe dwa rozwiązania zarówno wykreślają wszystkie dane na jednym wykresie, ale różnią się nieco w iteracjach.

Pierwsze rozwiązanie wykorzystuje word do wyodrębniania słowa z ciągu bezpośrednio podczas drukowania.

colors = "red green #0000FF" 
files = "file1 file2 file3" 
plot for [i=1:words(files)] word(files, i).'.dat' lc rgb word(colors, i) 

Drugie rozwiązanie zmienia linetype a następnie przechodzi bezpośrednio na liście słów zamiast używania indeksu.

colors = "red green #0000FF" 
files = "file1 file2 file3" 
set for [i=1:words(colors)] linetype i lc rgb word(colors, i) 
plot for [file in files] file.'.dat' 
+0

Właśnie przeszedłem, żeby przetestować to teraz. Wolę Twoje drugie rozwiązanie, które nie wymaga trybu mnożenia. To działa. Piękne rozwiązanie. Nie wiedziałem o "słowach" i "słowie", mimo że korzystałem z gnuplot przez ponad dekadę. Dziękuję Ci. –

+0

@ tommy.carstensen Twoje podejście z 'do for .. plot' działa tylko w trybie' multiplot'. Oba moje rozwiązania używają 'plot dla [...' i dają jeden wykres. Przerysowałem moją odpowiedź, aby to wyjaśnić. – Christoph

+2

Dzięki za wyjaśnienie. Nauczyłem się również, że "słowo" i "słowa" są zawarte w demo zmiennych łańcuchowych dla tych, którzy chcą bardziej szczegółowo to zbadać: http://gnuplot.sourceforge.net/demo/stringvar.html –