Czy istnieje sposób na iteracyjne pobieranie danych z wielu plików i wykreślanie ich na tym samym wykresie w gnuplot? Załóżmy, że mam pliki takie jak data1.txt, data2.txt ...... data1000.txt; każda ma taką samą liczbę kolumn. Teraz mógłbym napisać coś takiego:
plot "data1.txt" using 1:2 title "Flow 1", \
"data2.txt" using 1:2 title "Flow 2", \
.
.
.
"data1000.txt" using 1:2 title "Flow 6"
Ale to byłoby naprawdę niewygodne. Zastanawiałem się, czy istnieje sposób na zapętlenie części fabularnej w gnuplot.
bash
funkcja w odpowiedzi poniżejOdpowiedzi:
Na pewno jest (w gnuplot 4.4+):
Zmienna
i
może być interpretowana jako zmienna lub ciąg, więc możesz zrobić coś takiegojeśli chcesz, aby linie były odsunięte od siebie.
Wpisz
help iteration
w wierszu poleceń gnuplot, aby uzyskać więcej informacji.Koniecznie zobacz również odpowiedź @ DarioP na temat
do for
składni; to daje coś bliższego tradycyjnejfor
pętli.źródło
Spójrz także na
do { ... }
polecenie od wersji gnuplot 4.6, ponieważ jest bardzo potężne:http://www.gnuplotting.org/gnuplot-4-6-do/
źródło
help do
.Mam skrypt all.p
Tutaj dwa ostatnie wiersze są dosłowne, a nie heurystyczne. Potem biegnę
Zmień
*.dat
na typ posiadanego pliku lub dodaj typy plików.Następny krok: Dodaj do ~ / .bashrc tę linię
i umieść plik w
all.p
swoim katalogu domowym i voila. Możesz wydrukować wszystkie pliki w dowolnym katalogu, wpisując p i Enter.EDYCJA Zmieniłem polecenie, ponieważ nie działa. Wcześniej zawierał
list(i)=word(system(ls -1B *.dat),i)
.źródło
list=system(ls -1B *.dat)
Zamiast tego musiałem napisać .list=system('ls -1B *.dat')
Użyj poniższych, jeśli masz oddzielne kolumny do wykreślenia na wykresie
źródło
Chciałem użyć symboli wieloznacznych do wykreślenia wielu plików często umieszczanych w różnych katalogach, podczas pracy z dowolnego katalogu. Rozwiązaniem, które znalazłem, było utworzenie następującej funkcji w
~/.bashrc
i użyj go np.
plo *.dat ../../dir2/*.out
do wykreślenia wszystkich.dat
plików w bieżącym katalogu i wszystkich.out
plików w katalogu, który znajduje się na wyższym poziomie i jest nazywanydir2
.źródło
plo() { [[ $# -eq 0 ]] && echo "Usage plo file1 file2 ..." || { .... } }
aby uniknąć dzwonieniagnuplot
bez plików.Oto alternatywne polecenie:
źródło