暇な理系大学生の備忘録

ちょっとしたことをつらつらと

gnuplotの使い方【小目盛、対数目盛、凡例の細かな調整、for文、ギリシャ文字】

日々レポートと格闘していると、そういやあのコマンド紹介してない、これもあったか、これは知らんかった、便利だ

というようなことが多々あります。

その中のいくつかを紹介したいと思います。

 

今回は

小目盛の設定

対数目盛の設定

凡例の調整

for文

ギリシャ文字の表示

を紹介しようかと

 

まずは小目盛りの設定

目盛の設定は前に

set xtics 3

set ytics 5

 

みたいなのがあるのを紹介したと思いますがこれは大目盛といって、下に数字が表示されますよね。

ただ、やっぱりもっと細かく目盛りがほしいなぁ、でも全部に数字はいらんなぁ、ということもあると思いますのでそこでこれを使います。

set mxtics 10

 

です。mが付きました、それだけです(笑) 意味としてはx軸の大目盛一つの間を何等分するかです。

例:x軸大目盛間隔5、小目盛り5つ(間隔1)

f:id:hima_b:20170628201159p:plain

 

この程度の差ですけどね(笑)

 

 

次は対数軸の設定

これはいわゆる片対数、両対数グラフを書きたいときのコマンドです。

set logscale x

 

 xがyならy軸が対数になります。

f:id:hima_b:20170628201532p:plain

これは両方ともy軸は対数で、x軸が左は線形、右が対数です。

表示する関数やデータが指数関数的に変化するものだったりするときによく使います。

 

 

次は凡例の調整を。

set key box title 'test' at 0.5,0.5 vertical

 

この一文の説明としては、

boxで凡例の周りを囲む。

title 'test'で凡例群に名前を表示する(使ったことはない笑)

at x,yでグラフ上のx、y座標に凡例を移動

これは全体を1x1とした座標系です。また座標でなくてもtop,bottom,left,rightでそれぞれの方向の端まで移動できます。またbelowでx軸の下に平積みで表示できます。

後ろのverticalは凡例が複数の時に縦積み、horizonalで横積みできます。

例:さっきのコマンドを実行

f:id:hima_b:20170628203603p:plain

 

 実はkeyコマンドはこれ以上にいろいろ機能ありますが、ここら辺知ってればいいかなと。もしかしたら、もしかしなくても、keyなんてデフォルトでもいいかもしれませんが...

 

お次にfor文

一応gnuplotにもforとかif、whileは存在します。その中でも使うんじゃないかなと思ったのがfor文だったので紹介を。

plot for [i = 1:3] x**i title sprintf("f(x) = x^%d",i)

 

 iが1~3の間でそれ以下の処理を繰り返すというものです。

x**iはx,x^2,x^3となって、それ以後のtitle自体は以前紹介はしましたが、sprintfは初めてのはず?

このsprintfの書式はC言語のprintfとたぶん一緒です。sprintfの出力がtitle ' 'における' 'の部分に置き換わります。つまりi=0のときtitle 'f(x) = x^1'と書くのと同じになります。

さっきの凡例調整のグラフ自体はこのfor文で書いてます。

 

応用として

plot 'no1.csv' using 1:2

 にfor文を使ってみると

plot for [i = 1:3] sprintf("no%d.csv",i) using 1:2

 

 という風な感じになります。

 これを実行するとno1.csv、no2.csv、no3.csvが一気に表示できます。

(カンマ区切りの文言とか要りますがここでは割愛)

ばーっと一気に何かするときに便利です。

 

 

最後にギリシャ文字の表示について。

理系だとギリシャ文字を書くことは多いですよね、ΩとかθとかΓとか...

今まで紹介してなかったのが申し訳ないです(笑)

 

set ylabel '{/Symbol G}

 かくとGに対応するギリシャ文字Γが表示できます。

小文字だと表示されるギリシャ文字も小文字です。

 

あと追加でpwdというコマンドを。

pwdと実行するとカレントディレクトリが表示されます。csvとかpltファイルはここに入れるようにしてください。画像をエクスポートする際も一回ここに保存ずるのがよいかと。

 

 

今回はこの辺で... では