研究で必要な雑多な知識をごった煮で
プロフィール

termoshtt

Author:termoshtt
大学院生
専攻:流体物理学
Editor: vim
Language: C++,python

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--/--/-- --:-- スポンサー広告 TB(-) CM(-)
gnuplot v4.6がでて半年くらいたつが、新機能まとめ的な記事を見掛けないので書いてみる。

今回はfor文について。
このブログfor文ばっかだな。

徐に例をあげてみる
do for [j=0:4]{
title sprintf("%dth data",j)
plot for [i=0:5] sprintf("data%d",j) index i title sprintf("%dth",i)
pause -1
}

実際に使っているのを少し改変してみた。
dataファイルdata0,data1,data2,data3,data4があり、
その各々に5ブロック分のデータが書いてある様な状況である。
偏微分方程式の時間発展とか計算する時によくある状況である。

順に説明していこう

sprintf


gnuplot中で数値を文字列に変換したいことはままある。
例えば上記の様にファイル名を生成したい時などである。
sprintfはCの関数と同様であり、char*に書きこむ変わりにその場に展開する。つまり
 plot sprintf("data%d",1) 
 plot "data1" 
と同じ挙動を示す。

plot for


これはv4.4で追加された機能だと思う(未確認、v4.4では動作確認済み)
 plot for [i=0:2] x**i 

のように書くと
 plot x**0 , x**1 , x**2 

と同じ挙動が得られる。

do for


これはv4.6での新機能である。
もう特に説明の必要はないと思うが{}でくくられた命令をループ実行する。
{}を使った同様の構文がif/whileでも使えるらしい。
この辺りは次回に



2012/07/31 05:31 gnuplot TB(0) CM(0)
gnuplotについてTips:凡例を分割する方法について。

gnuplotの凡例というのは普通にgnuplotでグラフを出力したとき、右上にでる
"hoge.dat" -
 x*sin(x) -
みたいなあれである。
これはgnuplot中ではkeyというキーワードで管理する。例えば左上に出したかったら
set key left
箱で囲みたかったら
set key box
などである。

ここまでわかれば、あとはhelp keyとすれば大概の情報は出てきそうなものだが、本題のこの凡例を分割する方法が見当たらない。なので場当たり的ではあるが、対処法を考えたので載せておく。

例によって大したことはないが、アイディアはmultiplotで複数のグラフを重ねる、というものである。
set xrange [-5:5]
set yrange [-5:5]
set multiplot
multiplot> plot x
multiplot> set key left
multiplot> plot x*x
とすればだいたいわかってもらえるだろう。こんな感じ
multiplot.png

rangeを設定しないと面白いことになるので注意が必要である。あと、なんか周囲の枠が太くなっているような気がする。

なんかもっといい方法があるのかな?
2010/12/22 00:11 gnuplot TB(0) CM(0)
ちょっとしたTipsをひとつ。

普段sshを使うとき、-Xオプションは付けないで起動することが多い。エディタは基本的にvimをつかうので端末のみで不便がないから、特に試したこともなかった。
しかし問題が発生。計算結果をプロットしようとし、gnuplotを起動してプロットを使用とするとエラーが。
Xを転送してないので当たり前か、と思いつつ解決法を模索したところ、gnuplotで出力結果をAAで出力できる、ということを思い出し、試してみた。ということでメモ。

大したことはなく、gnuplotで
set terminal dumb
とするだけ。出力結果はこんな感じ。
gnuplot_AA2.png
参考HP:MacWiki - gnuplot
2010/12/16 00:47 gnuplot TB(0) CM(0)
検索フォーム
ブロとも申請フォーム
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。