Bashを使用したgnuplotプロットの自動化

Bashを使用したgnuplotプロットの自動化

エラー範囲のある折れ線グラフでプロットし、他のpngファイルに出力する必要があるファイルが6つあります。ファイル形式は次のとおりです。

2番目の平均最小値最大値

これらのグラフを自動的に描画するには?そのため、bash.shというファイルを実行して6つのファイルを取得し、グラフを別の.pngファイルに出力します。タイトルと軸ラベルも必要です。

ベストアンサー1

私が正しく理解したなら、これはあなたが望むものです。

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

おすすめ記事