N.Y.Cityのまちかど
GNUPLOT-MEMO
GNUPLOTに関する覚書
コマンド
演算子
- +,-,*,/,%
- 和、差、積、商、剰余
- **
- べき乗
- $,|,^
- (ビットごとの)and,or,ex-or(排他的論理和)
- &&,||
- (論理的)and,or
- ==,!=
- 等しい、等しくない
- ? :
- 三項演算子
グラフ表示設定
- set [xyz]range [開始値:終了値]
- [xyz]軸の値がとる範囲を指定する。
- (s)plot [x開始値:x終了値][y開始値:y終了値]([z開始値:z終了値]) ~
- としてもよい。
- set set [xyz]label ~
- [xyz]軸につけるラベルを指定する
- unset surface
- 線をプロットしない(等高線だけを見たいとき用いる)
- set view 0,0
- 視点を真上からに変更する
- unset key
- 凡例を全て非表示にする
- plot ~,~~ notitle
- notitleが指定されたものだけ凡例が表示されない
- set key …
- 位置指定コマンドを…の部分に入れることで凡例の位置を変更する
コマンド | 表示位置 |
---|---|
left | 左側 |
right | 右側 |
top | 上側 |
bottom | 下側 |
outside | 図の右側の外 |
below | 図の下側の外 |
[x座標],[Y座標] | 直接座標指定 |
等高線・カラーマップ
- set contour
- 等高線を表示
- set cntrparam levels ~
- 表示する等高線の本数を指定する
- set pm3d
- 3次元でプロットされたメッシュに色をつけて表示する
- set pm3d at b
- カラーマップを底面に表示する
- set pm3d map
- カラーマップのみを表示する
- set palette defined (値と色の組み合わせ,値と色の組み合わせ,…)
- カラーマップの配色を変更する
- 値と、それに対応させる色の名前を列挙して設定する
- 例 set palette defined (0 "blue", 1 "white", 2 "red")
- set palette rgbformulae R,G,B
- カラーマップの配色を変更する
- R,G,Bにはそれぞれの色を変化させる関数の番号を入力する。
- 例:(標準) set palette rgbformulae 7,5,15
- 例:(虹色) set palette rgbformulae 22,13,-31
関数一覧
* there are 37 available rgb color mapping formulae: 0: 0 1: 0.5 2: 1 3: x 4: x^2 5: x^3 6: x^4 7: sqrt(x) 8: sqrt(sqrt(x)) 9: sin(90x) 10: cos(90x) 11: |x-0.5| 12: (2x-1)^2 13: sin(180x) 14: |cos(180x)| 15: sin(360x) 16: cos(360x) 17: |sin(360x)| 18: |cos(360x)| 19: |sin(720x)| 20: |cos(720x)| 21: 3x 22: 3x-1 23: 3x-2 24: |3x-1| 25: |3x-2| 26: (3x-1)/2 27: (3x-2)/2 28: |(3x-1)/2| 29: |(3x-2)/2| 30: x/0.32-0.78125 31: 2*x-0.84 32: 4x;1;-2x+1.84;x/0.08-11.5 33: |2*x - 0.5| 34: 2*x 35: 2*x - 0.5 36: 2*x - 1
作例
2次元正規分布
Twitterで質問されたものを作ってみた。
σx,σy,σxyのそれぞれを0.25と仮定して2次元正規分布をプロットする。
f(x,y) = (1/(2*pi*0.25*sqrt(1-0.5**2)))*exp(-1/(2*(1-0.25)) *((((x-0.5)**2)/0.25)+(((y-0.5)**2)/0.25)-((2*0.5*(x-0.5)*(y-0.5))/0.25))) set isosample 50 set contour set cntrparam levels 10 set yrange[-1:2] set xrange[-1:2] splot f(x,y)
等高線だけをプロットする場合は上に続けて
unset surface set view 0,0 replot
点音源に対するPowerResponse
点音源から距離xだけ離れたところに剛壁があった場合の、点音源表面のPowerレスポンスを示す。 まずは2次元平面版(周波数が50[Hz]で一定)のグラフを描画する。 また、音速を340.29[m/s]として計算している。
p(x) = 1+(sin(2*(50/340.29)*x)/(2*(50/340.29)*x)) set xrange[0:50] set yrange[0:2] set xlabel "x[m]" set ylabel "P/P_0" plot p(x)
ここで、音速を340.29でなく、340とすると、計算結果が整数に丸められてしまい、うまく計算ができないので注意する。(340.0として実数型の値にすればOK)
次に3次元版(x軸に周波数、y軸に距離、z軸にPowerResponseをプロット)のグラフを描画する。
p(x,y) = 1+(sin(2*(y/340.29)*x)/(2*(y/340.29)*x)) set xrange[0:50] set yrange[20:500] set zrange[0:2] set xlabel "x[m]" set ylabel "f[Hz]" set zlabel "P/P_0" set isosample 50 splot p(x,y)
色つきで表示するには、上に続けて
set pm3d replot
カラーマップを表示するには
set pm3d at b replot
カラーマップ「のみ」を表示するには
set pm3d map replot
カラーマップの色を変更する。値が1(すなわちPowerResponseが音源のパワーと等しい)時白、それよりも強い時赤、弱いとき青が表示されるようにマップする
set palette defined (0 "blue", 1 "white", 2 "red") replot
関数出力の最低値が0.6のようで、本来1で白になるはずが1.2あたりに白が来てしまっているので、修正する。
set palette defined (0.6 "blue", 1 "white", 2 "red") replot
参考文献
- gnuplot tips
- gnuplotに関する入門資料、様々なtipsがまとめられた必見サイト。
- 更新が止まっていってコマンドがちょっと古いのが残念。
- (といっても、パラメータ設定で"set no ~"と書かれている部分を
- "unset ~"に置き換えればほぼOK。
現在ご覧のページの最終更新日時は2015/03/15 00:44:27です。
Copyright (C) N.Y.City ALL Rights Reserved.
Email: info[at]nycity.main.jp