この質問 ( gnuplot store one number from data file into variable ) には、最初の回答でいくつかのヒントがありました。
私の場合、放物線のパラメータを含むファイルがあります。パラメータを gnuplot 変数に保存しました。次に、各タイムステップのパラメーター変数を含む関数をプロットします。
#!/usr/bin/gnuplot
datafile = "parabola.txt"
set terminal pngcairo size 1000,500
set xrange [-100:100]
set yrange [-100:100]
titletext(timepar, apar, cpar) = sprintf("In timestep %d we have parameter a = %f, parameter c = %f", timepar, apar, cpar)
do for [step=1:400] {
set output sprintf("parabola%04d.png", step)
# read parameters from file, where the first line is the header, thus the +1
a=system("awk '{ if (NR == " . step . "+1) printf \"%f\", $1}' " . datafile)
c=system("awk '{ if (NR == " . step . "+1) printf \"%f\", $2}' " . datafile)
# convert parameters to numeric format
a=a+0.
c=c+0.
set title titletext(step, a, c)
plot c+a*x**2
}
これにより、parabola0001.png、parabola0002.png、parabola0003.png、… という名前の一連の png ファイルが得られ、それぞれが というファイルから読み込まれたパラメータを持つ放物線を示していますparabola.txt
。タイトルには、指定された時間ステップのパラメーターが含まれています。
gnuplotsystem()
関数を理解するには、次のことを知っておく必要があります。
- 二重引用符内のものは gnuplot によって解析されません
- ドットは、gnuplot で文字列を連結するためのものです
- awk
printf
コマンドの二重引用符は、gnuplot パーサーから隠すためにエスケープする必要があります
この gnuplot スクリプトをテストするには、たとえば任意の名前でファイルに保存し、parabolaplot.gplot
実行可能 ( chmad a+x parabolaplot.gplot
) にします。parabola.txt
ファイルはで作成できます
awk 'BEGIN {for (i=1; i<=1000; i++) printf "%f\t%f\n", i/200, i/100}' > parabola.txt