回答:
私が正しく理解していれば、これはあなたが望むものです:
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_in
、何らかの形式のスクリプトを使用してgnuplotコマンドファイル(たとえばと呼びます)を記述し、各ファイルに対して上記のコマンドを使用して、を使用してプロットし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ソリューション:
echo > gnuplot.in
for FILE in *; do
echo "set xlabel \"Label\"" >> gnuplot.in
echo "set ylabel \"Label2\"" >> gnuplot.in
echo "set term png" >> gnuplot.in
echo "set output \"${FILE}.png\" >> gnuplot.in
echo "plot \"${FILE}\" using 1:2:3:4 with errorbars title \"Graph title\"" >> gnuplot.in
done
gnuplot gnuplot.in
これは役立つかもしれません。
#set terminal postfile (These commented lines would be used to )
#set output "d1_plot.ps" (generate a postscript file. )
set title "Energy vs. Time for Sample Data"
set xlabel "Time"
set ylabel "Energy"
plot "d1.dat" with lines
pause -1 "Hit any key to continue"
スクリプトファイルをとして実行しますgnuplot filename
。