【GMT】データを可視化!psxyコマンドを使ってグラフ作成

プログラミング


こんにちは、とりりんです。

今回は、GMTのpsxyコマンドについて説明します。

こんな方向けに書いています!

  • GMT初心者の方
  • データ解析をしている方
  • データの可視化をしたい方

是非最後まで読んでいただけると嬉しいです!

スポンサーリンク



GMT(psxyコマンド)とは

GMTとは、ハワイ大学が開発したマッピングツールで、非常に綺麗な地図を描くことが可能です。

GMTについて詳しく知りたい方は、こちらをご覧ください。

今回紹介するpsxyコマンドでは、グラフを作成したり、図形を挿入することができます。

今回はグラフ作成をメインに紹介していきます。

ターミナル上で以下のコマンドを打つと、オプション一覧が表示されます。

忘れた時に確認する感じですね(覚える必要ないですよ)。

gmt psxy

グラフ作成

色々含めたものはこんな感じになります。

gmt psxy ${データ} -R${描画範囲} -B${軸関連の設定} -J${図法・描画サイズ} -W${線の太さ・色} -S${挿入図形の種類・大きさ} -G${図形の塗りつぶし色} -K -O >> ${保存する画像のパス}

R,B,Jオプションは必須、あとは任意(場合に応じて)です。

めっちゃ長いですが、拘らなければ1行でできちゃいます。

では、それぞれについて説明していきます。

スポンサーリンク

データの作成方法

データはx軸、y軸の情報が格納されたテキストやcsvファイルパスを指定します。

データの中身はこんな感じ。まぁ普通のデータですね。

1 3
2 5
3 6
4 1
5 10

3次元データの場合は、列を1つ増やせばいいだけですよ。

Rオプション

Rオプションはグラフの描画範囲を示します。

Rオプションはpsxy以外でも色々な場所で使いますが、これは基本的にどのコマンドでも同じ働きをします。

どのように範囲を示すかと言うと、X軸のMinimum/X軸のMaximum/Y軸のMinimum/Y軸のMaximusです。

-R0/100/0/10みたいな感じです。簡単ですね。

GMTは基本的に地図描画に用いられるので、Min Lon/Max Lon/Min Lat/Max Latと説明している場合が多いですね。

スポンサーリンク

Bオプション

Bオプションは軸関連の設定ができますが、結構厄介です。

結論から言うと、こんな感じで書きます。

-Ba2f1g1:”X軸ラベル名称”:/a5f2g3:”Y軸ラベル名称”::.”グラフタイトル”:WneS

完全に暗号ですね。笑

まず、/で分離しており、前がX軸の設定、後がY軸の設定です。

aが軸に表示する数値の間隔、fがサポート線の間隔、gがグリッドの間隔です。

よくわからないと思うので、後述する例をみてから理解していただいた方が早いと思います。

そして、: :で囲まれた箇所が軸ラベル、:. :がグラフのタイトルとなります。

最後に表したアルファベットは、それぞれWest(左)North(上)East(右)South(下)を示しています。

大文字と小文字で設定できますが、大文字がBオプション全てを表示、小文字がBオプションの一部(軸ラベルや数値以外)を表示します。

完全に表示させたくない場合は、その場所に対応するアルファベットを入れなければ問題ありません。

何も示さなければ、全部表示されるWNESが適用されます。

スポンサーリンク

Jオプション

Jオプションは、図法や描画サイズを示します。

-Jx1c/0.5cみたいな感じ。

図法はJの後につくアルファベットで指定でき、メルカトル図法(地図用)ならm、グラフ(地図ではない)ならxなどと決まっています。

今回はグラフなのでxですね。

また、大きさはBオプションと同じく/の前後でX軸とY軸の設定ができ、グラフの描画範囲に適した値を自分で探さなければいけません。

私は適当に設定して、グラフごとに都度調整しています。

数値の後につくcはセンチです。

Wオプション

Wオプションではデータの座標を結ぶ線の太さや色を指定できます。

-W1,redみたいな感じです。

Wの後の数値は線の太さ、,の後に色を指定します。

色は16進数やRGBでの指定も可能(むしろその方がいい)です。

スポンサーリンク

Sオプション, Gオプション

Sオプションは、データ座標に図形の挿入ができます。

Sc0.3みたいな感じ。

Sの後にくるアルファベットは図形の種類(cはcircle(円)、tはtriangle(三角形)mなど)、数字は大きさを示します。

Gオプションは、図形の塗りつぶし色を指定します。

基本的にSオプションとセットで使われます。

Gredみたいな感じ。

これもWオプションと同様に、色は16進数やRGBでの指定ができます。

Kオプション, Oオプション

こいつらがGMTが嫌われる要因の厄介な奴らです。

まず、これらのオプションの次に出てくる>>>について理解しておく必要があります。

bashでは>では新規作成を、>>では追加する事を指します。

GMTでは、新規作成時にKオプション、これ以上追加しない場合はOオプション、それ以外はKオプションとOオプションの両方を示す必要があります。

実際に示すとこんな感じ。

gmt ... -K > ${画像}
gmt ... -K -O >> ${画像}
gmt ... -K -O >> ${画像}
gmt ... -O >> ${画像}

これが正しくできていない場合、訳わからんエラーを出してきます。

スポンサーリンク


グラフ作成の例

説明長すぎですね。上記をもとに作成したグラフの例を示していきます。

ソースコードはGitHubに置いてあります。

データはこの2つを使います。

txtData=./data/data.txt
csvData=./data/data.csv      

基本パターン

      
img=./img/test1.ps
range=1/5/0/10
base=a1f1g1/a2f3g4
gmt psxy $txtData -R$range -B$base -Jx3/2 -P > $img

タイトル・軸ラベル追加

img=./img/test2.ps
base=a1f1g1:"x"::."title":/a2f3g4:"y":
gmt psxy $txtData -R$range -B$base -Jx -P > $img      

スポンサーリンク

タイトル・軸ラベルを一部追加

img=./img/test3.ps
base=a1f1g1:"x"::."title":/a2f3g4:"y":SWne
gmt psxy $txtData -R$range -B$base -Jx -P > $img      

線の色追加

img=./img/test4.ps
lineColor=0/128/0
gmt psxy $txtData -R$range -B$base -Jx -W1,$lineColor -P > $img

ポイントに図形追加

img=./img/test5.ps
circleColor=green
gmt psxy $txtData -R$range -B$base -Jx -W1,$lineColor -P -K > $img
gmt psxy $txtData -R -B -J -Sc0.2 -G$circleColor -O >> $img

スポンサーリンク


軸を複数に変更

img=./img/test6.ps
data2Color=red
data2Range=1/5/0/100
data2Base=a1g1/a20f10:"y2":E
gmt psxy $txtData -R$range -B$base -Jx -W1,$lineColor -P -K > $img
gmt psxy $txtData -R -B -J -Sc0.2 -G$circleColor -K -O >> $img
gmt psxy $csvData -R$data2Range -B$data2Base -Jx1/0.1 -W1,$data2Color -K -O >> $img
gmt psxy $csvData -R -B -J -St0.2 -G$data2Color -O >> $img

凡例追加

凡例の説明はしてませんが、こんなこともできます。

img=./img/test7.ps
frameColor=0/0/255
backColor=#FFFFFF
legRange=1/9.5/1/1.2
gmt psxy $txtData -R$range -B$base -Jx -W1,$lineColor -P -K > $img
gmt psxy $txtData -R -B -J -Sc0.2 -G$circleColor -K -O >> $img
gmt psxy $csvData -R$data2Range -B$data2Base -Jx1/0.1 -W1,$data2Color -K -O >> $img
gmt psxy $csvData -R -B -J -St0.2 -G$data2Color -K -O >> $img
gmt pslegend -R -J -Dx$legRange -F+p1,blue+gwhite -O <> $img
S 0 c 0.2 green black 0.2 y
S 0 t 0.2 red black 0.2 y2
EOF      
    

まとめ

今回はGMTのpsxyコマンドについてお話しました。

数行でできちゃうので、覚えてしまえば簡単ですよ。

最後までご覧いただき、ありがとうございました!


Python

↓とりりんを応援して頂けると嬉しいです!↓
にほんブログ村 投資ブログ お金(投資)へ
にほんブログ村

スポンサーリンク



コメント

タイトルとURLをコピーしました