いちからはじめる GMT その23 - makecpt

2009年 9月 1日 掲載


カラーパレットを出力する makecpt の 3回目. のこりのカラーパレットをやっつけてしまおう.


前回につづき,no_green からためしていく.

no_green のカラーパレットの範囲は -32〜32 と, 正負にひろがっているので, 描画データには双曲放物面のデータを使う.

$ awk 'BEGIN{for(x=-4;x<=4;x+=0.1)for(y=-4;y<=4;y+=0.1)print x, y, x^2-y^2}' > hp.txt 
$ xyz2grd hp.txt -Ghp.grd -I0.1 -R-4/4/-4/4

no_green のデフォルトのカラーパレットを見てみよう.

$ makecpt -Cno_green
#	cpt file created by: makecpt -Cno_green
#COLOR_MODEL = RGB
#
-32	32	96	255	-28	32	96	255
-28	32	159	255	-24	32	159	255
-24	32	191	255	-20	32	191	255
-20	0	207	255	-16	0	207	255
-16	42	255	255	-12	42	255	255
-12	85	255	255	-8	85	255	255
-8	127	255	255	-4	127	255	255
-4	170	255	255	0	170	255	255
0	255	255	84	4	255	255	84
4	255	240	0	8	255	240	0
8	255	191	0	12	255	191	0
12	255	168	0	16	255	168	0
16	255	138	0	20	255	138	0
20	255	112	0	24	255	112	0
24	255	77	0	28	255	77	0
28	255	0	0	32	255	0	0
B	32	96	255
F	255	0	0
N	128	128	128

間隔 4 で,16段階で色が指定されている. データ hp.txt の z値の範囲は -16〜16 なので, makecpt に -T-16/16/2 をつける.

$ makecpt -Cno_green -T-16/16/2 -Z > ng.cpt
makecpt: Warning: Making a continous cpt from a discrete cpt may give unexpected results!

おっと,警告が出てしまった.-Z をはずしてやりなおそう.

$ makecpt -Cno_green -T-16/16/2 > ng.cpt
$ grdimage hp.grd -Jx1 -Cng.cpt -Ba1 > hp_ng.eps

no_green

ちょっと変だが,わかりやすいと言えば,わかりやすい色彩だ.

次は,panoply. 0〜16 までの範囲を 16段階で離散的な色指定がされている.

描画には,前回作ったガウス分布データ g.grd を使う.

$ makecpt -Cpanoply -T0/1/0.0625 > pp.cpt
$ grdimage g.grd -Jx1 -Cpp.cpt -Ba1 > gauss_pp.eps

panoply

次,polar.-1〜1 まで,2段階の連続的な色指定. 双曲放物面を描画してみる.

$ makecpt -Cpolar -T-16/16/16 -Z  > pl.cpt
$ grdimage hp.grd -Jx1 -Cpl.cpt -Ba1 > hp_pl.eps

polar

あれ,その19 などで作った図と同じ色彩だ. カラーパレットファイル pl.cpt を見てみよう.

$ cat pl.cpt
#	cpt file created by: makecpt -Cpolar -T-16/16/16 -Z
#COLOR_MODEL = RGB
#
-16	0	0	255	0	255	255	255
0	255	255	255	16	255	0	0
B	0	0	0
F	255	255	255
N	128	128	128

自前で作ったカラーパレットファイル cp2.cpt と, 配色がまったく同じである. これからは echo文でちまちま作るのはやめて, makecptコマンドで作ることにしよう.

次,rainbow. デフォルトのカラーパレットを見てみる.

$ makecpt -Crainbow -Z
#	cpt file created by: makecpt -Crainbow -Z
#COLOR_MODEL = +HSV
#
0	300	1	1	1	0	1	1
B	0	0	0
F	0	0	1
N	0	0	0.501961

cyclic と同じく,HSV色空間で色が指定されている. 0 から 1までの範囲を, 色相 H が 300(マゼンタ)から,0(赤)へと連続的に変化している. ガウス分布を描画してみる.

$ makecpt -Crainbow -Z  > rbw.cpt
$ grdimage g.grd -Jx1 -Crbw.cpt -Ba1 > gauss_rbw.eps

rainbow

次,red2green.範囲 -1〜1,2段階,連続的.

$ makecpt -Cred2green -T-16/16/16 -Z  > rg.cpt
$ grdimage hp.grd -Jx1 -Crg.cpt -Ba1 > hp_rg.eps

red2green

負が赤,正が緑であるが,これ,赤緑色盲の方には判別できないよな. なるべく使わないのが良さそうな配色だ.

次,seis. 色の指定は,-1 から 1まで 9段階である. 双曲放物面の範囲 -16〜16 を 9分割するのは切りが悪いので, 10段階にしておこう. -Tオプションは,-T-16/16/3.2.

$ makecpt -Cseis -T-16/16/3.2 -Z  > ss.cpt
$ grdimage hp.grd -Jx1 -Css.cpt -Ba1 > hp_ss.eps

seis

正が青,負が赤,とは感覚的に反対のような気がするが, 地震学的(seismic)には,これが常識なのだろうか.

次,split.範囲 -1〜1,4段階,連続的.

$ makecpt -Csplit -T-16/16/8 -Z  > sp.cpt
$ grdimage hp.grd -Jx1 -Csp.cpt -Ba1 > hp_sp.eps

split

く,暗い…. 中間が黒べたになるのは,印刷にも不向きだと思う.

次が最後,wysiwyg.範囲 0〜20,20段階,離散的. openwin -cubesize large と waxenvy printer 用のカラーパレットとのこと. これらは 20色しか使えないのかな?

$ makecpt -Cwysiwyg -T0/1/0.05 > ww.cpt
$ grdimage g.grd -Jx1 -Cww.cpt -Ba1 > gauss_ww.eps

wysiwyg

わるい配色ではないが,階段状になるのはやっぱり気になるかな.


以上で,3回にわたってしまった makecptコマンドによるカラーパレットの紹介は, すべて終了である. 気に入ったカラーパレットはみつかっただろうか. 私が使うとしたら,globe と polar の 2つくらいかな.


[ KDOホームにもどる ] [ いちからはじめる GMT インデックスにもどる ]


(C) 2009 KDO