GNUPLOT

- not so Frequently Asked Questions -

update 2004/12/17

カラーマップを使った3次元表示 (pm3d)

1 | 2 | 3 | 4

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)
fig/sample6.7a

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
fig/sample6.7b fig/sample6.7c
up

等高線を色で表示したい.

[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)
fig/sample6.8a

pm3dを使って底面だけを2次元表示するのは非常に簡単です.

gnuplot> set pm3d map
gnuplot> splot x*x*exp(-x*x)*y*y*exp(-y*y)
fig/sample6.8b
up

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 と 考えます.描きたいヒストグラムは,次のようなものです.

fig/sample6.9

データの各行を何かプログラムを使って膨らませます.上の図で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
fig/sample6.9a
up

[ver.4] ONLY !

Gnuplot ver.4を使っているなら,pm3dを使って,もう少しカッコ良いグラ フを作ることができます.

gnuplot> set pm3d
gnuplot> splot "test.dat" with pm3d
fig/sample6.9b
up