Если я правильно понимаю, это то, что вы хотите:
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
Это предполагает, что все ваши файлы находятся в текущем каталоге. Выше приведен скрипт bash, который будет генерировать ваши графики. Лично я обычно пишу командный файл gnuplot (назовем его, скажем, gnuplot_in
), используя сценарий какой-либо формы, с указанными выше командами для каждого файла и строю его используя gnuplot < gnuplot_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()
где Your_file_glob_pattern
что-то, что описывает именование ваших файлов данных, будь то *
или *dat
. Вместо glob
модуля вы можете использовать os
также, конечно. Что бы ни генерировало список имен файлов, на самом деле.
Решение Bash с использованием временного командного файла:
источник
Это может помочь.
Выполнить файл сценария как
gnuplot filename
.Нажмите здесь для более подробной информации.
источник