GMTで描こう Part 2: plot

plotモジュール その1

 今回はGMTのplotモジュールを扱っていきます(GMT5まではpsxyという名前でした)。このモジュールは線・多角形・シンボルを二次元平面上に描画する機能を持っています。

 plotはファイル(または標準入力)からx, yのデータを読み込み、線・多角形・シンボルを地図上のそれらの場所に描きます。入力はファイルと標準入力の他に、パイプラインやヒアドキュメントも利用可能です。

線を引く

plotモジュールの最も単純な用例として、入力で指定された点をつなぐ線分を引くことができます。次のグラフを作ってみましょう。

#!/bin/bash
gmt begin graph png
   gmt basemap -Jx1c -R0/10/0/10 -Bafg -BWeSn
   gmt plot -W1p << EOF
1 1
5 9
9 9
EOF
gmt end show

このスクリプトは指定した座標(1, 1), (5, 9), (9, 9)を結ぶ線分を描画します。このようにGMTにおいて入力するデータは基本的に、xを第1列、yを第2列にして与えます。-W1p1pは線分の太さ(1ポイント)を指示しています。他にも線の色や線種を指定できます。

...
   gmt plot -W2p,blue << EOF
1 1
5 7
9 7
EOF
  gmt plot -W2p,red,-. << EOF
1 1
5 5
9 5
EOF
gmt end show

これを追加したシェルスクリプトを実行すると、次の画像が得られます。red,の後ろの-.が線種の指定で、ここでは一点鎖線にしています。

多角形を描く

 線を描くことを応用して、任意の多角形を描くことができます。図形の塗りつぶしには-Gオプションを使います。以下ではawkコマンドを使って正五角形の頂点の位置を数表として作成し、それをパイプラインでgmt plotに渡しています。

gmt begin pentagon png
  gmt basemap -Jx2c -R-2/2/-2/2 -Bag -BWeSn
  awk 'BEGIN{for(i=0;i<5;i++)print cos(i*2*3.1415/5), sin(i*2*3.1415/5)}' \
    | gmt plot -Glightgreen
gmt end show

-Wオプションを併用すると、図形の輪郭線が引かれます。

awk ... | gmt plot -Glightgreen -W1p

以下の図で、輪郭線が閉じているのは-Gオプションに-Wオプションを併用しているためです。-Gオプション無しに閉じた図形にしたい場合は、-Lオプションを追加します。

シンボルをプロットする

 -Sオプションを指定することで、入力された点にシンボルを描画できます。-Sオプションの直後にシンボルの種類を指定します。シンボルの種類の直後にはサイズを指定し、シンボルはそれと同じ直径の円に内接するように描かれます。-Sとともに使う場合-G-Wオプションはそれぞれ、シンボルの塗りつぶしと、アウトラインのあり/なしを指定します。

#!/bin/bash
gmt begin symbol png
   gmt basemap -Jx1 -R0/10/0/10 -Bagf -BWeSn
   awk 'BEGIN{for(i=1;i<10;i++)print i, i}' | gmt plot -Sa0.5 -Gblack
gmt end show

ベーシックなシンボルは以下の通りです。GMTでは他にも楕円やベクトルなど、様々なシンボルを描くことができます。

棒グラフを描く

 -Sbまたは-SBオプションを使用することで、棒グラフを描画することができます。まずは単純な棒グラフを作ってみましょう。縦棒グラフには-Sbを使います。

#!/bin/bash
gmt begin bar_graph_01 png
   gmt basemap -Jx1c -R0/4/0/4 -BWeSn -Bafg
   gmt plot -Sb1 -Gtan -W << EOF
1 1
2 2
3 3
EOF
gmt end show

-Sb1のように数値与えることで、棒の幅を指定できます。

 積み上げ棒グラフにすることも可能です。

#!/bin/bash
gmt begin bar_graph_02 png
   gmt basemap -Jx1c -R0/4/0/4 -BWeSn -Bag
   gmt plot -Sb1 -Gtan -W << EOF
1 1
2 1.2
3 1.4
EOF
   gmt plot -Sb1+b -Gskyblue -W << EOF
2 2 1.2
3 3 1.4
EOF
gmt end show

 オプションに+bを与えることで棒の下端の位置を指定できます(デフォルトでは0)。+bの後ろに数値を書くことで指定できますが、例のように数値を省略することで、入力データ最後の列が下端の位置と見做されて実行されます。

 棒の太さと位置を調整することで、以下のようなグラフも作成できます。

 -SBオプションを使うことで横棒グラフにすることができます。

#!/bin/bash
gmt begin bar_graph_04 png
   gmt basemap -Jx1c -R0/4/0/4 -BWeSn -Bag
   gmt plot -SB1c -Glightgreen -W << EOF
1.5 1
2.5 2
3.5 3
EOF
gmt end show

入力する値は、xが棒の長さになっている点に注意してください。

まとめ

 今回はplotモジュールの基本的な使い方を説明しました。

  • plotモジュールを使って、線・多角形・シンボルを描画できる。
  • 入力するファイルは、1列目にx座標、2列目にy座標とする。
  • -Wオプションで線、-Gで塗りつぶし、-Sでシンボルをそれぞれ描画する。

記事タイトルの「その1」の通り、高度な使用法については今後の記事で書いていこうと思います。

参考文献

  1. plot – GMT 6.1.1 Documentation
  2. いちからはじめるGMT: その2, その3, その6, その8, その9, その14

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

前の記事

GMTで描こう Part 1