ラベル gnuplot の投稿を表示しています。 すべての投稿を表示
ラベル gnuplot の投稿を表示しています。 すべての投稿を表示

2008年10月23日木曜日

gnuplot :: フォントサイズとか

動的帯磁率のバグもとれてあとはパラメータいじってひたすら計算機にあげるのみ。
今週の目標達成やれやれと思ってたら「論文マダー」がきた。
えー月曜から学会なんですけどとかブルー入りつつとりあえず図を作るかと思ってgnuplotのフォルダみたらbin以下全部なぜか消えてた。なんで?意味がわからん。というわけでこないだ作った図すべて消えた。涙目。bloggerにバッチファイルの内容をあげてたのですぐなんとかなったけど。blogに書いとくのはバックアップとしてもいいのかも知れん。一応文章化してるからあとから意味取りやすいし。

今日もgnuplotのいろんな小技を調べて時間が過ぎる。論文本体からの逃避行動なのかもしれないが。gnuplotは意外に機能満載だ。グラフ描かせるならexcelより高機能。そりゃそうか。

gnuplotつかってて困るのが凡例や軸のタイトルの文字が小さいことだ。gnuplotの出力はA4とかにグラフ一枚ばーんってのをデフォルトで想定しているのか、論文とかのサイズにすると「字がちっちゃくて見えん・・・」とかになる。図を小さくするのも一つの方法らしいが。eps出力してイラレとかでいじってたんだがめんどい。出力の段階でなんとかならんのかとおもってたらなんとかなるらしい。

・postscript eps出力ならset terminalのオプションとして”フォント名”サイズ で、目盛とか凡例のフォントサイズが決まる。
・x軸y軸のラベルのフォント、サイズはfont "フォント名、サイズ"のオプションで決めることができる。
・Åなんかの記号もencodingつかって出力できてしまう。iso_8859_1のエンコーディングを指定して\305がÅに対応。

例(あとでイラストレーターでいじったりを考えてあえてArialフォントにしてみる。gnuplotのデフォルトのHelveticaだとたまに字化けするorz。Arialは確かWindows版Helvetica)
set terminal postscript eps enhanced color "Arial" 20
set output "dIdV.eps"
set encoding iso_8859_1
set xlabel "bias voltage (V)" font"Arial,30"
set ylabel "dI/dV (a.u.)" font"Arial,30"
set xrange [-0.005:0.005]
plot "a3.0" w lp lt 1 lw 2 ps 0.5 title "a=3.0[{\305}]", \
"a5.0" w lp lt 2 lw 2 ps 0.5 title "a=5.0[{\305}]", \
"a7.0" w lp lt 3 lw 2 ps 0.5 title "a=7.0[{\305}]", \
"a11.0" w lp lt 4 lw 2 ps 0.5 title "a=11.0[{\305}]"

参考文献
http://ryukyu.astr.tohoku.ac.jp/pukiwiki/index.php?Members%2Fchinone%2F%B3%D0%BD%F1%2FGnuplot#i90ad3c5
http://co.maxwell.jp/?page=gnuplot#p4

ギリシア文字も出力できるのか!

2008年10月8日水曜日

sed+gnuplot

ノーベル賞日本人4人ってすげー。
南部先生といえば南部演算子とかしか知らんので、てっきり超伝導の人だとおもってたら素粒子の人だったんだ。超伝導も自発的対称性の破れってやつなんかぁ。超伝導は食わず嫌いというか手を出すと危険な香りがぷんぷん漂う恐ろしい領域なので踏み入ったことが無いからよく知らん。それにしても素粒子と物性ってなんだかんだ言って理論のベースは近いんだな。応用になってくると全然違うほうを向いてる気がするけど。見慣れない用語に毛嫌いしてんとマトモに場の理論とかも見といたほうがいいんかもなー。そして物性の人間としては近藤先生のノーベル賞まだー?と言いたい。

gnuplotはsedコマンドと組み合わせて使うと図の大量生産がラクだ。
ちなみにコマンドプロンプト経由でgnuplotを起動する場合、Windowsではwgnuplot.exeがあるディレクトリにパスを通して、wgnuplotで起動する。(Linuxだとgnuplotなんだが)
sedはUnixコマンドなんだが、MinGWなりCygwinが入ってるとコマンドプロンプトで使える。
sed -e "s/x/y/g" aaa.txt > bbb.txt
のようにするとaaa.txt中のxをyで置換したものをbbb.txtとして出力するということになる。
Linuxだと
sed -e "s/x/y/g" aaa.txt | gnuplot
でsedで置換して直でgnuplotにほり込めるみたいなんだが、Windowsではなんかうまく行かない。
たいてい論文とか学会用の図を作るときはある一つのパラメーターだけが違うデータで似たようなグラフを何枚か作るというパターンが多い。ので、sedでパラメーターの部分だけ変換したgnuplot用のバッチつくるバッチファイルを作る+バッチをまとめてロードするバッチをつくる(文にするとわけわからんな)をつくってやると楽。サンプルを自分用にあげとくと、

固有値の結果をプロットする用(a=5.0って条件)
set terminal gif
set output "eigen_odd_a5.0.gif"
set xrange[1:41]
set yrange[0:2.0]
set xlabel "iteration N+1= odd"
plot "odd_eigen_5.0" w p ps 0.5 pt 7 lt -1 ti "a5.0"

eigen5.0.gpって名前で保存(ちなみに点でプロットするときもその色はlt で決める。lt はラインタイプってだけでは無い模様)

sed でひたすら変換してる部分作る

sed -e "s/5.0/3.0/g" eigen5.0.gp >eigen3.0.gp
sed -e "s/5.0/7.0/g" eigen5.0.gp >eigen7.0.gp
sed -e "s/5.0/9.0/g" eigen5.0.gp >eigen9.0.gp
sed -e "s/5.0/11.0/g" eigen5.0.gp >eigen11.0.gp

これを実行してから

load "eigen3.0.gp"
load "eigen5.0.gp"
load "eigen7.0.gp"
load "eigen9.0.gp"
load "eigen11.0.gp"

って書いたファイルをgnuplotにロードしてやる。と、gif画像が5枚一気に生産される。自分で打つ部分がちょっとでも少なくなるとなんか嬉しい。
ちなみにgnuplotでファイルに出力したグラフはgnuplot起動中には見れなかったりするので、gifを確認したかったらいちどgnuplotを終了しないといけない。