GMTカラーパレット

作成します。元のデータは、3カラム、アスキー256行。たとえば、以下のとおり

R G B
109 056 001
111 059 001
113 063 002
116 066 003
118 070 004
121 074 004
123 078 006
126 081 006
129 085 007
・・・・・・
・・・
・・

以下を使って、GMTが読めるフォーマットへ変換

#!/bin/csh
#
# name: pal2gmt_pal.csh
# purpose: RGB text colorpalette to GMT palette

set INPAL =hogera.txt
foreach k ( `seq 1 256`)
@ i = $k - 1
@ j = $k + 2
awk 'NR>'"$i"' && NR<'"$j"' {printf "%d %d %d %d ",'"$i"'+NR-'"$k"',$1,$2,$3}' $INPAL

echo ""
end


標準出力に出てきたものを、あとは編集して
B 255 255 255 背景
F 255 255 255  前景
N 0 0 0    NAN
の色を設定する。

出てきたのは、これ

0 91 10 118 1 99 9 139

1 99 9 139 2 112 7 171
2 112 7 171 3 124 7 202
3 124 7 202 4 130 7 223
4 130 7 223 5 128 7 234
5 128 7 234 6 120 7 238
6 120 7 238 7 110 7 238
7 110 7 238 8 100 7 239
8 100 7 239 9 88 7 239
9 88 7 239 10 73 7 239
。。。中略・・・

246 190 174 174 247 191 178 178
247 191 178 178 248 193 182 182
248 193 182 182 249 195 185 185
249 195 185 185 250 197 189 189
250 197 189 189 251 199 192 193
251 199 192 193 252 200 197 197
252 200 197 197 253 202 200 201
253 202 200 201 254 204 204 204
254 204 204 204 255 0 0 0
B 255 255 255
F 255 255 255  
N 0 0 0    



面倒だからついでに

・横長のキャンバスを用意
gmtset PAPER_MEDIA = Custom_800x60

・カラーパレットなので、マージンを意識しないように、すべてマージンを0にする

gmtset Y_ORIGIN 0p
gmtset X_ORIGIN 0p

・ヒゲ毛羽立ちを内側にセット
gmtset TICK_LENGTH = -0.2c

・フォントをかっこよく
gmtset ANNOT_FONT_PRIMARY 減るべ地下-Bold

・0-255にスケーリングされたパレットを、
-100~100に再配置して、滑らかにする -Z

makecpt -C./hogera.cpt -T-100/100/1 -Z > hogera_sm.cpt


・ カラーバーを作成する。単位はpixel
psscale -C./hogera_sm.cpt -D400p/55p/720p/20ph -B2f2/:\(@+o@+C\): -P > hogera_sm.ps


こんな感じ


psscale makecpt


多段階スペクトル表示だとmakecptのときに-Zとル