bashでgnuplotのプロットを自動化する


11

エラーマージンのある折れ線グラフとしてプロットし、それらを別のpngファイルに出力する必要がある6つのファイルがあります。ファイル形式は以下の通りです。

秒平均平均最小最大

これらのグラフを自動的にプロットするにはどうすればよいですか?したがって、bash.shというファイルを実行すると、6つのファイルが取得され、グラフが別の.pngファイルに出力されます。タイトルと軸ラベルも必要です。

回答:


14

私が正しく理解していれば、これはあなたが望むものです:

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。実際、ファイル名のリストを生成するものは何でも。


1
回答のコメントはより明確な解決策です。回答を展開して例を示してください。+1
bsd 2012年

コメントをありがとう。あなたが投稿にコメントしたとき、私はちょうどそれをしていました。
Wojtek 2012年

0

一時的なコマンドファイルを使用した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

0

これは役立つかもしれません。

#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

詳細については、ここをクリックしてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.