gnuplotによるグラフ作成20~表面プロット
今回はgnuplotによる3Dの表面プロットを実行する方法と表面のカラーを設定する方法について紹介する。
1. 表面プロットの作成
表面プロットを作成するには3Dプロットを実行するsplot
にオプションとしてpm3d
を指定する。具体的にはsplot 関数 with pm3d
とすることで、デフォルトのラインのみの3Dプロットの表面にカラーマップにより修飾された表面プロットが得られる。
f(x,y)=exp((-x**2-y**2)/20) set isosamples 50,50 splot f(x,y) with pm3d
以下のように表面プロットが得られる。
表面プロットのカラーマップをグレースケールに変更するにはset palette gray
を用いる。
set palette gray replot
2. 表面カラーの設定
表面プロットの配色を設定するにはset palette defined (値1 "色名1", 値2 "色名2", ・・・)
とする。Z値とその時の色を指定すると、その間はグラデーションが適用される。例えば
set palette defined (0 "blue",0.5 "white", 0.7 "red", 1 "black") replot
0が青、0.5が白、0.5を赤、1を黒に設定して得られたプロットを下に示す。set palette defined ()
は値と色を直接していできるので直観的に扱いやすい。
他にset palette rgbformulae func(R) func(G) func(B)
でfunc(R)は赤色を変化させるあらかじめ設定されている関数番号、func(G)は緑色を変化させる関数番号、func(B)は青色を変化させる関数番号を示す。
関数番号は、例えば3だと線形でx, 7だとsqrt(x)となっていて関数番号と関数の関係を見るにはshow palette rgbformulae
とすると関数番号と関数の一覧が表示される。
例えば、
set palette rgbformulae 33,13,10 replot
虹色に変化する表面プロットが得られる。
他には
set palette rgbformulae 3,11,6 replot
rgbformulaeの設定は直観的にわかりにくいので、上の例含めてgnuplotのマニュアルに書かれている以下から選択するとよい。
7,5,15 ... 伝統的 pm3d (黒-青-赤-黄):デフォルト
3,11,6 ... 緑-赤-紫
23,28,3 ... 海 (緑-青-白); 他の組み合わせも試してみてください
21,22,23 ... 温度色 (黒-赤-黄-白)
30,31,32 ... 白黒のカラー表示化 (黒-青-紫-黄-白)
33,13,10 ... 虹 (青-緑-黄-赤)
34,35,36 ... AFM 温度色 (黒-赤-黄-白)
3. 表面プロットのマップビュー
真上から見るマップビューにするにはset view map
とする。さらにアスペクト比が横長なのでset size square
として縦横を等しくすると以下のようになる。
set view map set size square replot
4. まとめ
今回はgnuplotによる3Dの表面プロットを実行する方法と表面のカラーを設定する方法と例について紹介した。