Jeśli dobrze rozumiem, właśnie tego chcesz:
for FILE in *; do
gnuplot <<- EOF
set xlabel "Label"
set ylabel "Label2"
set title "Graph title"
set term png
set output "${FILE}.png"
plot "${FILE}" using 1:2:3:4 with errorbars
EOF
done
Zakłada się, że wszystkie pliki znajdują się w bieżącym katalogu. Powyżej jest skrypt bash, który wygeneruje twoje wykresy. Osobiście zwykle piszę plik poleceń gnuplot (nazywaj to, powiedzmy gnuplot_in
), używając skryptu jakiejkolwiek formy, z powyższymi poleceniami dla każdego pliku i kreślę go za pomocą gnuplot < gnuplot_in
.
Aby podać przykład, w python:
#!/usr/bin/env python3
import glob
commands=open("gnuplot_in", 'w')
print("""set xlabel "Label"
set ylabel "Label2"
set term png""", file=commands)
for datafile in glob.iglob("Your_file_glob_pattern"):
# Here, you can tweak the output png file name.
print('set output "{output}.png"'.format( output=datafile ), file=commands )
print('plot "{file_name}" using 1:2:3:4 with errorbars title "Graph title"'.format( file_name = datafile ), file=commands)
commands.close()
gdzie Your_file_glob_pattern
jest coś, co opisuje nazywanie twoich plików danych, *
czy to lub *dat
. Zamiast glob
modułu możesz os
oczywiście również użyć . Cokolwiek generuje listę nazw plików, naprawdę.
Rozwiązanie Bash, używając tymczasowego pliku poleceń:
źródło
To może pomóc.
Uruchom plik skryptu jako
gnuplot filename
.Kliknij tutaj po więcej szczegółów.
źródło