いちからはじめる GMT その16 - psxy -C

2009年 4月 1日 掲載


今回は,ちょっと派手に,色を変えてみたりする.


その6 psxy -Sc で, データファイルの 3番目のフィールドの値を, シンボルのサイズにしてみたが, -Cオプションでカラーパレットファイルを指定することにより, 値によって違う色で描画することができる.

カラーパレットファイルには,

値1 Red1 Green1 Blue1 値2 Red2 Green2 Blue2

の 8つのフィールドを各行に記述する. 値1 から値2 までの間で,各色が線形に変化する. Red, Green, Blue は 256階調(0〜255)で指定する.

さっそく,ためしてみよう. 最初はシンプルに,0 から 1 までの間を, 白から赤に変化させてみる. 1行のファイル cp.cpt を,echo で,ささっと作ってしまおう.

$ echo 0 255 255 255 1 255 0 0 > cp.cpt

データファイルは,その6 で使った 2次元のガウス関数をもう一度作る.

$ awk 'BEGIN{for(x=-4;x<=4;x+=1)for(y=-4;y<=4;y+=1)print x, y, exp(-(x*x+y*y)/8)}' >  g.txt

で,描画である.シンボルのサイズは大きめにしてみた.

$ psxy g.txt -R-4/4/-4/4 -Jx1 -Ba1 -Sc0.6 -Ccp.cpt > g.eps

2次元のガウス関数

色とサイズを同時に変えたいときは,データファイルに 4つ目のフィールドが必要となる. 各フィールドは,

となる.

2次元のガウス関数で,ためしてみる.

$ awk 'BEGIN{for(x=-4;x<=4;x+=1)for(y=-4;y<=4;y+=1)print x, y, exp(-(x*x+y*y)/8), exp(-(x*x+y*y)/8)}' >  g2.txt
$ psxy g2.txt -R-4/4/-4/4 -Jx1 -Ba1 -Sc -Ccp.cpt > g2.eps

2次元のガウス関数

カラー描画の機能を応用すれば,おもしろい図を作ることがでる. 座標間隔を細かくして,適当な大きさの四角形を敷きつめれば, グラデーションのかかった分布図が作れるのだ.

$ awk 'BEGIN{for(x=-4;x<=4;x+=0.4)for(y=-4;y<=4;y+=0.4)print x, y, exp(-(x^2+y^2)/8)}' >  g3.txt
$ psxy g3.txt -R-4/4/-4/4 -Jx1 -Ba1 -Ss0.6 -Ccp.cpt > g3.eps

2次元のガウス関数

カラーパレットファイルに複数行記述すれば, もっといろいろな色を塗ることができる.

例として,双曲放物面(hyperbolic paraboloid, x2-y2)を 2色で描いてみる. -16 から 0 を 青から白,0 から 16 を白から赤にしてみた.

$ awk 'BEGIN{for(x=-4;x<=4;x+=0.4)for(y=-4;y<=4;y+=0.4)print x, y, x^2-y^2}' >  hp.txt
$ echo -16 0 0 255 0 255 255 255 > cp2.cpt
$ echo 0 255 255 255 16 255 0 0 >> cp2.cpt
$ psxy hp.txt -R-4/4/-4/4 -Jx1 -Ba1 -Ss0.6 -Ccp2.cpt > hp.eps

双曲放物面


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


(C) 2009 KDO