いちからはじめる GMT その6 - psxy -Sc

2008年 10月 1日 掲載


おわび

今回は描画の重ね合わせを扱う予定でしたが, ストーリーの都合上,次回の掲載といたします. 進行が行き当たりばったりで申し訳ありません.


今回は,データ点のプロットをしてみる. psxyコマンドに -Sオプションを付けることで, シンボルをプロットすることができるのだ. シンボルはいろいろ選べるのだが, 今回はシンプルに -Sc で円(Circle)をプロットしてみる.

まずは,データファイル xy.txt を作る.

$ awk 'BEGIN{for(x=-4;x<=4;x+=1)for(y=-4;y<=4;y+=1)print x, y}' > xy.txt

-4≦x≦4,-4≦y≦4 の範囲に,格子間隔 1 でデータ点をセットした. さっそく -Sc をつけて描画してみる.

$ psxy xy.txt -R-4/4/-4/4 -Jx1 -Ba1 -Sc > xy.eps
psxy: Mismatch between actual (2) and expected (3) fields near line 0

エラーが出てしまった. 存在しているフィールド(2つ)と, 期待されるフィールド(3つ)が一致しない,とのことである.

描画には,x,y と,もうひとつ値が必要ということなのだが, 求められているのはシンボルのサイズである. シンボルのサイズを指定するには,次の 2通りの方法がある.

  1. -Scオプションにサイズを追記する.
  2. データファイルの 3番目のフィールドでサイズを指定する.

まず,最初の方法で描画してみる.-Sc に,円のサイズ(直径) 0.2 を追記する.

$ psxy xy.txt -R-4/4/-4/4 -Jx1 -Ba1 -Sc0.2 > xy.eps

xyプロット

期待される図ができた.

2番目の方法でも描画してみる. 3番目のフィールドに,円のサイズを 0.2 に指定した xy_2.txt を作って,描画する.

$ awk 'BEGIN{for(x=-4;x<=4;x+=1)for(y=-4;y<=4;y+=1)print x, y, 0.2}' > xy_2.txt
$ psxy xy_2.txt -R-4/4/-4/4 -Jx1 -Ba1 -Sc > xy_2.eps

xyプロット

同じ図ができた. まあ,この例では,最初のやり方(-Sc0.2)で作図するのがふつうだろう.

データファイルでシンボルサイズを指定する 2番目の方法は, xy点の値を表現するのに使える.例えば地震のマグニチュード分布とか.

例として,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)}' > xyz.txt

図化するとこうなる.

$ psxy xyz.txt -R-4/4/-4/4 -Jx1 -Ba1 -Sc > xyz.eps

xyzプロット

ここで,ちょっと疑問がわいた. データファイルの第3フィールドでサイズを指定し, -Scオプションにもサイズを指定するとどうなるのだろう. ためしてみた.

$ psxy xyz.txt -R-4/4/-4/4 -Jx1 -Ba1 -Sc0.2 > xyz_2.eps

xyzプロット

-Scオプションのサイズが優先されるようだ.

3つ以上のフィールドのあるデータファイルのデータ点をプロットするのに, わざわざフィールドが 2つだけのファイルを作りなおさなくてもよい,ということになる.


次回は,ちゃんと描画の重ね合わせをやります.


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


(C) 2008 KDO