gnuplot / intro / working
gnuplot 入門 — 生活編 It’s working !
(Anakin, Tatooine) 作業のバッチ化 ここでは,数値計算編の最後に保存したプロットファイル #!/usr/local/bin/gnuplot -persist # set terminal postscript landscape noenhanced monochrome # dashed defaultplex "Helvetica" 14 # set output 'output.ps' set xlabel "x" 0.000000,0.000000 "" set ylabel "y=exp(-x)" 0.000000,0.000000 "" set title "Pade approximation" 0.000000,0.000000 "" set xrange [ 0 : 2 ] noreverse nowriteback set yrange [ 0 : 1 ] noreverse nowriteback set mxtics 5.000000 set mytics 5.000000 set xtics border mirror norotate 1 set ytics border mirror norotate 0.5 plot "output.dat" using 1:2 title "Analytical" w l, "output.dat" using 1:3 title "L=1, M=2" w l, "output.dat" using 1:4 title "L=2, M=1" w l # EOF PostScriptに出力する部分はコメントアウトされています.gnuplotを再び gnuplot> load "output.plt" 他に,gnuplot起動時にこのファイル名をオプションとして渡す方法があり % gnuplot output.plt gnuplotの画面表示を残すもう一つの方法として,起動時のオプションに % gnuplot -persist output.plt 上のプロットファイルの例を見ると,一行目にこのオプションが書かれて % chmod +x output.plt % ./output.plt なお,この方法では,画面を閉じるためにkillコマンドやウィンドウのク プロットファイルをloadし直して,再び対話的にプロット作業を進める事も
という作業を繰り返して,満足のいくグラフを作っていきます.
という作業の繰り返しになります.この場合は,上ではコメントアウトされ 図の大量生産 研究活動にgnuplotが特に便利なのは,出来上がったプロットファイルを gnuplotのバッチモードは大量のデータを処理するときに非常に便利です. あるディレクトリの中に,calc1.dat, calc2.dat, calc3.dat のように番 set terminal png set output "calc1.png" set xlabel "Energy [MeV]" set ylabel "Cross Section [b]" set title "(n,2n) reaction" set xrange [ 0 : 20 ] set yrange [ 0 : 2 ] set mxtics 5 set mytics 5 set xtics 5 set ytics 0.5 plot "calc1.dat" using 1:2 notitle w l このファイル data.plt をgnuplotに「食わす」 % gnuplot < data.plt ![]() このプロットファイルを他のデータに流用する方法を考えます.上で作った sedを使ってファイルの一部を置換するには,次のようにします. % sed "s/calc1/calc2/g" data.plt | gnuplot たったこれだけで,新しい図calc2.pngが出来上がります.あとはこの作 csh, tcsh % foreach i (calc2 calc3 calc4 cal5) foreach? sed "s/calc1/$i/g" data.plt | gnuplot foreach? end sh, bash $ for i in calc2 calc3 calc4 cal5 ; do > sed "s/calc1/$i/g" data.plt | gnuplot > done データファイル数が多い時は,以下のようにsedを使って,datという拡張 $ for i in *.dat ; do > sed "s/calc1/`echo $i | sed "s/.dat$//"`/g" data.plt | gnuplot > done 図を一枚ずつ描くshellスクリプトを書くこともできます.こちらの方が, #!/bin/sh sed "s/calc1/calc2/g" data.plt | gnuplot sed "s/calc1/calc3/g" data.plt | gnuplot sed "s/calc1/calc4/g" data.plt | gnuplot sed "s/calc1/calc5/g" data.plt | gnuplot ... 以下のように awkを使って lsコマンドの出力を整形すれば,このスクリ % ls *.dat | awk '{printf("sed "s/calc1/%s/g" data.plt | gnuplotn",$1)}' プロットファイルの文字列を置き換える別の方法と #!/bin/sh gnuplot << EOF set terminal postscript eps color enhanced set output "$1.eps" set xlabel "Energy [MeV]" set ylabel "Cross Section [b]" set title "(n,2n) reaction" set xrange [ 0 : 20 ] set yrange [ 0 : 2 ] set mxtics 5 set mytics 5 set xtics 5 set ytics 0.5 plot "$1.dat" using 1:2 notitle w l EOF 見て分かるように,データファイルと出力EPSファイル名の拡張子を除いた $ ./plot.sh calc1 データファイルとEPSファイルの名前を変える場合は,上のスクリプトの中 さらに次のようなshellスクリプトやforeachなどを用いれば,上の例と同様 #!/bin/sh ./plot.sh calc1 ./plot.sh calc2 ./plot.sh calc3 ./plot.sh calc4 ... from Dr. Sato. Thanks !
![]() |