|
1.9.6 3D曲面プロット

基本的な3Dプロットの関数
関数 を3Dでプロットする.
In[1]:= Plot3D[Sin[x y], {x, 0, 3}, {y, 0, 3}]

Out[1]= 
3Dプロットには非常に多くのオプションがある.本節ではその中の基本的なものに限って説明する.他は2.10で説明する.
次に掲げる3Dプロットの最初のオプション群は,2次元用に提供される同名のオプションと機能面で同じである.

3Dプロットの基本的なオプション(注:最初の項目群はShowにも当てはまる)
前のプロットを呼び出し,設定を変えて表示し直す.この例ではプロット範囲を に限定した.
In[2]:= Show[%, PlotRange -> {-0.5, 0.5}]

Out[2]= 
プロットを作成する際により細かくサンプリングするように指定してみよう.変化の早い式をきれいにプロットするにはサンプリング数を増やすことが必要になる.
In[3]:= Plot3D[10 Sin[x + Sin[y]], {x, -10, 10}, {y, -10, 10}, PlotPoints -> 50]

Out[3]= 
同じプロットに今度は軸ラベルと格子を指定する.
In[4]:= Show[%, AxesLabel -> {"Time", "Depth", "Value"}, FaceGrids -> All]

Out[4]= 
3Dプロットで特に重要な設定はどこの空間点からプロット面を眺めるかを決めることだろう.実際の設定は,視点となる x, y, z の座標位置を選び,オプションViewPointに設定することで行える.Plot3DとShowの機能のどちらでも設定の仕方は同じである.座標の算出法は2.10.10で説明するのでそちらを参照してほしい.オペレーティングシステムのバージョンによって操作手順は違うが,フロントエンドに座標を対話的に取得させてくれる機能があるので,それを使いViewPointを設定するとやりやすいであろう.
これは,プロットした面をデフォルトの視点{1.3, -2.4, 2}から眺めたときのグラフである.視点のデフォルト値としては,視覚的に紛らわしいプロット面の部分的な配合が起こらないようにした「一般的な」位置が選択される.
In[5]:= Plot3D[Sin[x y], {x, 0, 3}, {y, 0, 3}]

Out[5]= 
同じプロット面を今度は真正面から眺めてみる.遠近法にならってプロットの後方部は前方部に比べずっと小さくなっている.
In[6]:= Show[%, ViewPoint -> {0, -2, 0}]

Out[6]= 

代表的なViewPointの選び方
人間は,複雑な数学的曲面を視覚的にとらえるのがどちらかというと苦手である.曲面の形を把握しやすくするためには,理解をたすけるような手掛りをできるだけ多くプロットに入れておくとよい.
視点に関しては,プロット面を多少斜め上方向から眺めるような値に設定するとたいていは最良の効果が得られる.また,視点をプロット面にある程度接近させ,遠近効果を付けた方が一般によくなる.また,プロット空間に囲み枠を引いて,プロット面の空間配置(オリエンテーション)を分かりやすくするのも1つの方法だろう.
デフォルトのオプション設定で曲面プロットを行う.
In[7]:= g = Plot3D[Exp[-(x^2+y^2)], {x, -2, 2}, {y, -2, 2}]

Out[7]= 
メッシュ表示を禁止にして再表示させる.この例のように,普通はメッシュがないと見づらくなってしまう.
In[8]:= Show[g, Mesh -> False]

Out[8]= 
陰影処理を禁止にする.表示装置によっては陰影処理ができないものもあるので注意.
In[9]:= Show[g, Shading -> False]

Out[9]= 
陰影処理とメッシュを入れておくことで,プロット面がどうなっているかを分かりやすくすることができる.ただし,ベクトル系の画像表示装置によっては,陰影処理機能が支援されないため使えないこともある.また,陰影処理を行うと,表示装置によっては曲面の描画にかかる時間が長くなる.
3Dのイメージに実在感を与えるために,デフォルトでは,特殊な色付けがプロット面に施され,擬似的な照明効果が与えられるようになっている.この場合,面がプロットの右上方向から3つの光源で照らされるという設定が使われる.任意の光源配置や曲面の反射特性等の設定法は,2.10.12で説明する.
特に,カラー対応の出力装置等を使っている場合は,擬似照明を使うと効果がでるが,場合によっては,プロット面をかえって分かりづらいものにしてしまう.そのようなときは,Lighting -> Falseを指定し照明を禁止にしておく.禁止した場合は,代りにz値に応じたグレースケールで面に陰影処理が施される.
特別指定なしでPlot3Dを使うと,擬似的な照明効果を出すためにプロット面の色付け処理が行われる.
In[10]:= Plot3D[Sin[x y], {x, 0, 3}, {y, 0, 3}]

Out[10]= 
Lighting -> Falseで照明効果を禁止させる.今度は,z値に対応したグレース ケールで陰影処理が行われる.
In[11]:= Show[%, Lighting -> False]

Out[11]= 
Lighting -> Falseで照明効果を禁止にすると,プロット面には,高さ値に対応したグレースケールで陰影処理が施される.プロット面の各部分に対して個別に陰影の明暗量を設定することも可能である.また,このような陰影処理を使うことで,面上の各点を特別な色付けで表示することにより,効果的に陰影付けすることができる.

プロット面の陰影処理と色付け
関数Sin[x y]で決定される高さの面を表示する.面の陰影の度合はGrayLevel[x/3]で決定される.
In[12]:= Plot3D[{Sin[x y], GrayLevel[x/3]}, {x, 0, 3}, {y, 0, 3}]

Out[12]= 
|