GMTでグラフを描く方法


0.はじめに
 GMTというのは、コマンドラインベースのお絵描ソフトです。地球 科学のために作られているので、簡単に地図を描いてくれたりして大変 多機能で便利なのですが、その一方でGMTのマニュアルの分かり難さ は定評があります。マニュアルのマニュアルが必要なくらいです。ここ では、GMTの第一歩として簡単なXYグラフの描き方を示します。簡 単な例でコツを掴んでしまえば、進んだことをやる時にはマニュアルを 見れば何とかなるようになるでしょう。

1.下準備
 GMTを使うには、UNIXの基礎知識が必要です。一応、丁寧に説 明はしますが、「リダイレクト」とか「シェル」とかいう言葉の意味が 分かる程度にはUNIXの入門書読んで勉強しておいて下さい。  GMTは直接ディスプレイに絵を表示するソフトではありません!G MTは、ポストスクリプトという形式の画像データを標準出力に出力し ます。従って、普通は出力結果を1回ファイルに落としてから、表示し たり、プリントアウトすることになります。 % GMTのコマンド > honyarara.ps てな具合です。「GMTのコマンド」は具体的にはマニュアルを見て下 さい。出力ファイルの名前は何でも良いですが、ポストスクリプトファ イルなので最後に.psを付けるのが慣例です。  GMTは基本的には、1命令で1つのことしかしませんから、線を2 本引きたいようば場合には命令を2回繰り返して、ファイルに追加書き をします。 % GMTのコマンド > honyarara.ps % GMTのコマンド >> honyarara.ps  ちょっと複雑な絵を描きたい時は毎回コマンドラインから命令を打ち 込むのは面倒なので、シェルスクリプトを作ってしまうのが便利ですね。 % cat mk_honyarara #!/bin/sh GMTのコマンド > honyarara.ps GMTのコマンド >> honyarara.ps % mk_honyarara こんな感じにやるのが楽です。

 さて、本題に入る前に出来た絵を見るにはどうすれば良いのか説明し ておきます。GMTに限らず、ポストスクリプトファイルを表示するに は、ghostscriptを使います。X-window 上で、 % gs honyarara.ps とすれば、表示されます。ただし、表示されているものと、実際の画像 ファイルの内容は多少異なります。例えば、ギリシャ文字などは正常に 表示されないので注意して下さい。  絵をプリントアウトするには、 % lpr honyarara.ps でOKです。こちらは、正しい絵がでるはずです。

2.psxy によるグラフの描き方(1)
 ここでは折れ線グラフを描いてみましょう。(0,0), (2,4), (3,1) の 3点を結ぶグラフを例にします。  実は、折れ線グラフの描き方はマニュアルの例題1です。でも、マニュ アルを読んでもまず折れ線グラフの描き方を理解することはできないで しょう。sample1d やら nawk やら psxy 何かが使われていて複雑に書 いてありますが、必要なのは psxy だけです。  まず、データファイルを作っておきましょう。1行ごとにxとyの値 を書いたファイルを作ります。ファイルの名前は、oresen.dat としま しょう。 % cat oresen.dat 0 0 2 4 3 1 xとyの値の区切りは、スペースです。コンマではいけません。スペー スは複数入っていても構いません。  では、GMTのコマンド psxy を使って折れ線グラフのポストスクリ プトファイルを作ります。 % psxy oresen.dat -JX3/2 -R-1/5/0/4 -X2.5 -Y5.0 > oresen.ps ghostscript で確認してみましょう。 % gs oresen.ps 「く」の字みたいなものが表示されたはずです。基本的には、たったこ れだけです。簡単ですね。  枠とかタイトルとかも付けられますが、まずは、5行上のコマンドの 解説をします。  psxy は線を引くGMTのコマンドです。  次に書いてある oresen.dat は描きたいデータのファイル名。  -JX3/2 とはグラフのサイズが、3インチ×2インチだということです。  -R-1/5/0/4 はグラフの範囲を(-1,0)-(5,4)にするということです。 数字の順番に注意して下さい。xの最小値/xの最大値/yの最小値/ yの最大値の順です。  -X2.5 -Y5.0 というのは、描き始める始点の指定です。A4サイズの 紙を横においた時の左下が基準(0,0)で、そこからインチ単位で、グラ フの左下の位置を指定します。

 psxy 以下の「oresen.dat」「-JX3/2」「-R-1/5/0/4」「-X2.5」 「-Y5.0」はどういう順番に書いても構いません。

3.psxy によるグラフの描き方(3)
 グラフを修飾しましょう。まずは枠線を書きます。オプションとして -BNWSE を付けます。実線で枠を描いてくれたはずです。 x軸には 0.5 間隔でメモリを打ち 1.0 間隔で数字を入れ、y軸は 1.0 間隔でメモリを打ち 2.0 間隔で数字を描くには -B0.5a1.0/1.0a2.0NWSE とします。これだと、上下左右に数字が入ってしまうので、左と下だけ にしたい場合には、 -B0.5a1.0/1.0a2.0nWSe とします。大文字の方向だけに数字が入ります。省略してしまうと枠を 描きません。例えば、 -B0.5a1.0/1.0a2.0WS のような場合です。

4.ちょっと便利な使い方
 例えば、データが x0 y0 z0 x1 y1 z1 x2 y2 z2 ........ となっていて、x−yとx−zの(折れ線)グラフを描きたいような場 合は、awk を使うと便利です。データファイル名が xyz.dat の場合には 例えば、 awk < xyz.dat '{print $1, $2}' | psxy -JX3/2 -R-1/5/0/4 -X2.5 -Y5.0 > oresen.ps awk < xyz.dat '{print $1, $3}' | psxy -JX -R >> oresen.ps とします。awk は簡単な演算もできるので、うまく利用するとかなり複 雑な図形を描くこともできます。詳しいことは awk のマニュアルを読 んで下さい。

GMTはじめの一歩(2) GMTで等高線を描く方法 へ行く


岩瀬 康行 (iwase@sci.hiroshima-u.ac.jp)

コンピュータに関するあれこれに戻る

岩瀬康行のホームページ
本多研のホームページ
地球惑星システム学科のホームページ