つれづれなる備忘録

日々の発見をあるがままに綴る

gnuplotによるグラフ作成18~基本的な3Dプロット

 前回までは2Dプロットについて紹介してきたが、今回からgnuplotによる3Dプロットする方法について紹介する。

1. 基本的な3Dプロットの方法

 3Dプロットする変数はx,yを使用することができる。例えば関数f(x,y)を次のように定義する。

f(x,y)=exp(-(x**2+y**2)/20)

f(x,y)を3Dプロットするためにはコマンドsplotを用いる。

splot f(x,y)

実行すると以下のグラフが得られる。

"基本的な3Dプロット"
基本的な3Dプロット

2. 描画範囲の設定

 プロットの描画範囲はデフォルトでX,Yは-10~10, Zについては0~1に設定されている。描画範囲を変更するにはX,Yについては2Dプロットと同様にコマンドset xrange[下限:上限], set yrange[下限:上限]を使用し、Zについてはset zrange[下限:上限]で設定することができる。例えばZの描画範囲を0~2にするには

set zrange [0:2]
replot

以下のようにZの範囲を変更したためピークが低く描画されたプロットが得られる。

"3Dプロットの描画範囲変更"
3Dプロットの描画範囲変更

3. サンプル密度の変更

 3Dプロットの網目がサンプルを表しているが、デフォルトのサンプル数はX,Yそれぞれ10づつに設定されている。このためピーク付近ではサンプルが疎になっていて、表示が見にくい。そこで網目の数、すなわちサンプル数を設定するにはset isosamplesを用いる。例えばX,Yそれぞれ50にするには

set isosamples 50,50
replot

サンプル密度(網目数)が上がり、かなり見やすくなっている。

"サンプル数を増やした3Dプロット"
サンプル数を増やした3Dプロット

4. 陰線処理

 3Dプロットを実行したときに、透過状態でプロットの裏側まで表示されるため裏側の状態を把握することに役立つ一方で、見にくくすることもある。そこで陰線処理(影に隠れる部分を見えなくする)を指定することができる。陰線処理を指定するにはset hidden3dとする。

set hidden3d
replot

透過状態で裏側まで見えていた線が、陰線処理によって見えなくなっていることが確認できる。

"3Dプロットの陰線処理"
3Dプロットの陰線処理

なお元の陰線処理をしない状態に戻すにはset nohidden3dとする。

5. 視点の設定

 3Dプロットをどこから見るかという視点を設定することができる。適当に動かすには3Dプロットが描画されているグラフウィンドウ上をクリックすると回転矢印が表示されるので、クリックボタンを押したままマウスを動かすと視点を動かすことができる。どの視点にすればよいか探る場合はこの方法がよいかもしれない。(角度情報はウィンドウ下のバーに表示される)ただし視点を固定したい場合はコマンドを用いて設定すると便利である。視点を設定するにはset view x軸まわりの回転角, z軸まわりの回転角, グラフの拡大率, z軸の拡大率となるx軸,z軸まわりの回転角度は度数で指定する。例えば

set view 70,40,1,1
replot

以下のように視点が移動できていることが確認できる。なおデフォルトは60.30,1,1に設定されている。現在の視点情報を表示させたい場合はshow viewとすると表示される。

"視点を移動させて3D表示"
視点を移動させて3D表示

6. まとめ

 今回はgnuplotによる3Dプロットの基本として3Dプロットのコマンド、プロット範囲、サンプル数、陰線処理、視点の設定について紹介した。