つれづれなる備忘録

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

gnuplotによるグラフ作成24~プロット座標系の変更

 今回はxy直交座標系と異なる極座標、円筒座標、球座標系でプロットする方法について紹介する。

1. 極座標

 前回までにパラメトリックプロットを紹介したが、今回は極座標系で具体的にはr=f(θ)と表せるような関数をプロットする。 極座標系を使用するには以下のようにset polarとすると変数t (θに相当)が設定される。

set polar
>dummy variable is t for curves

例えばカージオイド曲線  r=1+\cos \theta をプロットするには

plot 1+cos(t)

少し書式(レンジ・アスペクト比)を整える必要はあるが、極座標プロットはできている。

"極座標系によるカージオイド曲線のプロット"
極座標系によるカージオイド曲線のプロット

2. 円筒座標系/球座標系

 3次元での円筒座標系を扱うこともできる。まずset mapping cylidricalとすることで3次元空間を円筒座標系として取り扱う。さらに角度パラメータφを扱うためset parametricとしてパラメトリックモードにする。円筒を描画するには

 \begin{eqnarray} x&=&\cos \phi \\ y&=&\sin \phi \\ z&=&z \end{eqnarray}

をプロットする。

set mapping cylidrical
set parametric
set isosamples 40
splot cos(u),sin(u),v

以下のように円筒座標系でプロットすることができる。φはu, zはvに対応している。

"円筒座標系でのプロット"
円筒座標系でのプロット

円筒座標系と同じ要領で球座標系でプロットする。set mapping sphericalとすることで3次元空間を球座標系にして、set parametricとしてパラメトリックモードにする。 球座標系で球を描画するには

 \begin{eqnarray} x&=&\cos \theta \cos \phi \\ y&=&\cos\theta\sin \phi \\ z&=&\sin\theta \end{eqnarray}
set mapping spherical
set parametric
set isosamples 40
splot cos(u)*cos(v),cos(u)*sin(v),sin(u)

以下のように円筒座標系でプロットすることができる。θはu,φはvに対応している。

"球座標系でのプロット"
球座標系でのプロット

xyzのスケールが等しくないため、球がつぶれてみえてしまう。そこでset view equal xyzでxyzのアスペクト比を等しくし、さらにxy面と球の下端が揃うようにset ticslevel 0とする。

set view equal xyz
set ticslevel 0

以下のように球を正しく描画することができる。

"球座標プロットの調整"
球座標プロットの調整

3. まとめ

 今回はgnupotを用いて極座標、円筒座標、球座標系でプロットする方法を紹介した。