Wenn ich es richtig verstehe, ist es das, was Sie wollen:
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
Dies setzt voraus, dass sich alle Ihre Dateien im aktuellen Verzeichnis befinden. Das obige ist ein Bash-Skript, das Ihre Grafiken generiert. Persönlich schreibe ich normalerweise eine Gnuplot-Befehlsdatei (nennen wir sie beispielsweise gnuplot_in
) mit einem Skript in irgendeiner Form mit den obigen Befehlen für jede Datei und zeichne sie mit gnuplot < gnuplot_in
.
Um Ihnen ein Beispiel zu geben, in 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()
Wo Your_file_glob_pattern
ist etwas, das die Benennung Ihrer Datendateien beschreibt, sei es *
oder *dat
. Anstelle des glob
Moduls können Sie os
natürlich auch verwenden. Was auch immer eine Liste von Dateinamen erzeugt, wirklich.
Bash-Lösung mit einer temporären Befehlsdatei:
quelle
Dies könnte helfen.
Führen Sie die Skriptdatei als aus
gnuplot filename
.Klicken Sie hier für weitere Details.
quelle