- not so Frequently Asked Questions - update 2004/12/17
|
|
not so FAQ |
カラーマップを使った3次元表示 (pm3d)3次元図をカラー表示で描きたい.[ver.4] ONLY ! gnuplotの3次元表示は線あるいは点で描かれますが,ver.3.8や4.0からは pm3d をセットすることでカラーマップを用いた3次元表示が可能 になっています.画面へのカラー出力の他,PostScriptやpng/jpegなどのフォー マットでファイルに書き出す事ができます. gnuplot> set xrange [-2:2] gnuplot> set yrange [-2:2] gnuplot> set pm3d gnuplot> splot exp(-x*x)*exp(-y*y) PostScriptに出力する場合は,terminalのオプションcolor/monochrome によりカラーかグレースケールを選べます.グレースケールの図は set palette gray を用いても可能ですが,この場合は図中の格 子線は色が付いたままとなります.以下の2つの例はPostScript terminal を用いてファイルに出力した結果です. gnuplot> set term postscript eps enhanced color gnuplot> set output "color.eps" gnuplot> replot gnuplot> set term postscript eps enhanced monochromer gnuplot> set output "mono.eps" gnuplot> replot 等高線を色で表示したい.[ver.4] ONLY ! gnuplotの等高線はその名のとおり「線」ですが,pm3dを用いると色を塗っ た面で表示させることができます.等高線の表示とは事なり,密度分布を 色で表現したようなもので,色を付けられる面を底面や上面に投影すると いった感じになります.等高面を底面に表示するには set pm3d にオプション at b を付けます. gnuplot> set pm3d at b gnuplot> set ticslevel 0.8 gnuplot> set isosample 40,40 gnuplot> splot x*x*exp(-x*x)*y*y*exp(-y*y) pm3dを使って底面だけを2次元表示するのは非常に簡単です. gnuplot> set pm3d map gnuplot> splot x*x*exp(-x*x)*y*y*exp(-y*y) 3次元の棒グラフを描きたい.gnuplotは3次元棒グラフを描けないので,少々インチキする必要があります. 3次元データとして,次のようなものを考えます. # X Y Z 0.0 0.0 2.0 0.0 1.0 3.5 1.0 0.0 1.0 1.0 1.0 3.0 最初の行は,0< X <1, 0< Y <1 の範囲で Z=2 を表し,下の図 の(1)の領域に相当します.データはヒストグラムですが,最後の行で最大のX,Y 値が定義されていません.これは,1< Y <2, 1< Y <2 で Z=3.0 と 考えます.描きたいヒストグラムは,次のようなものです. データの各行を何かプログラムを使って膨らませます.上の図でX=0の線上を 考えると,Yは2.0, 2.0, 3.5, 3.5 とステップ状に変化しますので,これを 一つの折れ線で与えます.同様に,X=1とX=2の場合の折れ線も与えます. # X Y Z 0.0 0.0 2.0 0.0 1.0 2.0 0.0 1.0 3.5 0.0 2.0 3.5 1.0 0.0 2.0 1.0 1.0 2.0 1.0 1.0 3.5 1.0 2.0 3.5 1.0 0.0 1.0 1.0 1.0 1.0 1.0 1.0 3.0 1.0 2.0 3.0 2.0 0.0 1.0 2.0 1.0 1.0 2.0 1.0 3.0 2.0 2.0 3.0 このようにデータを用意できれば,後は隠線処理して線で繋ぐだけです.こ のデータを作るプログラムとしては....各自努力してみましょう. gnuplot> set hidden3d gnuplot> splot "test.dat" with lines [ver.4] ONLY ! Gnuplot ver.4を使っているなら,pm3dを使って,もう少しカッコ良いグラ フを作ることができます. gnuplot> set pm3d gnuplot> splot "test.dat" with pm3d |