GNUPLOT

- not so Frequently Asked Questions -

update 2006/04/18

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

1 | 2 | 3 | 4

3次元カラー表示の色を変えたい.

[ver.4] ONLY !

特に設定しなければ,pm3dは「黒→青→赤→黄」と変化するような配色を用 いて高さを表します.pm3dの配色を変えるには, set paletteコマン ドを用います.それに続くオプションにより,幾つかの色の変え方があります. Z値の最小値が-3,最大値が1となる関数 f(x,y) = (2*sin(x)-1)*exp(-y) を考 え,最小値のときに青,最大値で赤,z=0の高さで白となるように,色を変えて みます.

gnuplot> set ticslevel 0
gnuplot> set pm3d
gnuplot> set palette defined (-3 "blue", 0 "white", 1 "red")
gnuplot> splot (2*sin(x)-1)*exp(-y) with pm3d
fig/sample6.10a

オプション defined に続けて,設定したいZ値の値と,その高さ での色を与えます.pm3dは,与えられたZ値間で色を補間します.上の例では, Z=-3とZ=0の間で,色は青から白に変化します.

この例では,Z=0で背景色と同じになるように設定されています.この様な 配色は,Z値がある値になる領域を図から目立たなくしたい場合に便利です.例 えば密度分布図を平面で表示する際,Z=0となる領域を除外する場合等です.上 の図を平面で表示すると,分りやすいでしょう.負の領域は青,正の領域は赤で ハイライトされた散布図ができます.

gnuplot> set pm3d map
gnuplot> replot
fig/sample6.10b
up

もう一つ別の色変更方法では,オプションとして rgbformulae , それに続けて3つの整数値を与えます.それらの数字は,赤(R)/緑(G)/青(B) に 対して用いられる,ある決まった関数の番号になっています.例えば, rgbformulae 0,0,3 とすると,赤と緑は用いられず,Zの最小値から最大値 までが,黒から青へ直線的に変化するように対応付けられます.

色を変化させる関数は0から36まで,計37個定義されています.上の例だと, 番号3は直線変化に対応しています.gnuplotのdefaultは,7,5,15で,7番の関数 はsqrt(x), 5はx^3, 15はsin(360x)となっています.定義されている関数は, show palette rgbformurae で見ることができます.

palette rgbformulae を使って望みの色を得るのは,結構至難の技 ですが,help palette rgbformulaeで,幾つかの例が得られます. 例えば,33,13,10の組合せは「虹」となっていて,以下のような配色です.

gnuplot> set palette rgbformulae 33,13,10
gnuplot> splot -x*x with pm3d
fig/sample6.10c

その他,helpで紹介されている配色は,以下のようになっています.

fig/cb1
fig/cb2
fig/cb3
fig/cb4
fig/cb5

もひとつおまけの虹色.

gnuplot> set pm3d map
gnuplot> set size square
gnuplot> set palette rgbformulae 22,13,-31
gnuplot> splot -(x*x+y*y)
fig/sample6.10d
from Martin in Czech Republic. Thanks !
up