スポンサーリンク
スポンサーリンク

gmt basemapの使い方

スポンサーリンク
スポンサーリンク
スポンサーリンク
スポンサーリンク
basemap — GMT 6.6.0 documentation

gmt basemap は地図やグラフの枠を描くためのコマンドです。
GMT5までは、gmt psbasemapというコマンドでした。

ワンライナーで書く人には必要のないコマンドだったりします(後述)

スポンサーリンク
スポンサーリンク

グラフの枠を描く

gmt basemap -JX[ヨコの長さ]/[タテの長さ] -R[描画範囲] -B[x|y|z][a][f][g][+l”label”] -B[WSEN][+t”title”]
※ タテの長さを指定しない場合はヨコの長さと同じ
※ -B[WSEN]には数値を描きたい方角を入力する。ラベルも描きたい場合は大文字にする。

普通のグラフを描く

たとえば、

  • 12cm平方
  • 描画範囲は0から100まで
  • X軸・Y軸、共に10間隔の主目盛線(a)、1間隔の目盛(f)、5間隔の副目盛線(g)とする。
  • 数値は左・下に描く

というグラフを描く際は、

#!/bin/bash
gmt begin plot jpg
    gmt basemap -JX12 -R0/100/0/100 -Bxa10f1g5 -Bya10f1g5 -BWSne
gmt end

この結果が、

となる。

-Bオプションについて

GMTで面倒くさいのが -B オプション。
色々と遊んでみましょう。

  • -Bxa20f1g5 -Bya10f1g5 のとき (X軸の主目盛線は20間隔、1間隔の目盛(f)、5間隔の副目盛線(g))

  • -Bxa20 -Bya10f1g5 のとき (X軸の主目盛線は20間隔)

  • -Ba のとき (X軸もY軸も主目盛線だけ) -Ba-Bxyaの略

  • -Bxy のとき (枠だけ描く)


#!/bin/bash
gmt begin plot jpg
    gmt basemap -JX12 -R0/100/0/100 -Bxa10f1g5+l"X" -Bya10f1g5+l"Y" -BWSNE
gmt end
  • -BWSNE のとき (4辺に目盛りとラベルを描く)

  • -BWSne のとき (4辺に目盛りと2辺にラベルを描く)

  • -BWS のとき (2辺に目盛りと2辺にラベルを描く)

常用対数スケールのグラフを描く

gmt basemap -JX[ヨコの長さ][l]/[タテの長さ][l] -R[描画範囲] -B[x|y|z][a][f][g][+l”label”] -B[WSEN][+t”title”]
※ タテの長さを指定しない場合はヨコの長さと同じ
※ 常用対数スケールにしたい軸の長さの後に”l”を付ける。

たとえば、

  • 12cm平方
  • 描画範囲はX軸は0から10000まで、Y軸は1から10000まで。
  • Y軸は常用対数スケールにする。
  • X軸・Y軸、共に目盛り間隔はおまかせ。
  • 数値は左・下に描く

というグラフを描く際は

#!/bin/bash
gmt begin plot jpg
    gmt basemap -JX12/12l -R0/10000/1/10000 -Bxa10f1g5 -Bya10f1g5 -BWSne
gmt end

この結果が、

となる。

なお、10のべき乗表示にしたい場合は、

#!/bin/bash
gmt begin plot jpg
    gmt basemap -JX12/12l -R0/10000/1/10000 -Bxa10f1g5 -Bya1pg0.5p -BWSne
gmt end

のように数値の後に”p”をつければOKです。

時系列グラフを描く

gmt basemap -JX[ヨコの長さ]/[タテの長さ] -R[描画範囲] -B[x|y|z][a][y|o|d|etc.][f][y|o|d|etc.][g][y|o|d|etc.][+l”label”] -B[WSEN][+t”title”]
※ タテの長さを指定しない場合はヨコの長さと同じ
※ 日時は少なくとも日にちまで必要 (例 : 2020-04-01)。
※ 目盛り間隔は数値のあとに”y”を付けると年、”o”を付けると月、”d”を付けると日。

目盛り間隔の設定の詳細は公式ドキュメント参照

gmt — GMT 6.6.0 documentation

たとえば、

  • ヨコ30cm,タテ15cm
  • X軸の範囲は2000年から2020年まで
  • Y軸の範囲は0から100まで
  • 間隔は1年ごとに主目盛線、6か月ごとに副目盛線

というグラフの枠を描く場合は、

#!/bin/bash
gmt begin plot png
    gmt basemap -JX30/15 -R2000-01-01/2020-12-31/0/100 -Bxa1Yg6o -Byafg -BWSne
gmt end

この結果が、

となる。

ラベルを描く

-B(afg) オプションに +l をつけるとラベルを指定することができます。
たとえば、

#!/bin/bash
gmt begin plot jpg
    gmt basemap -JX12 -R0/100/0/100 -Bxa10f1g5+l"X" -Bya10f1g5+l"Y" -BWSne
gmt end

とすると、

となります。

タイトルを描く

-B(WSNE) オプションに +t をつけるとラベルを指定することができます。
たとえば、

#!/bin/bash
gmt begin plot jpg
    gmt basemap -JX12 -R0/100/0/100 -Bxa10f1g5+l"X" -Bya10f1g5+l"Y" -BWSne+t"hogehoge"
gmt end

とすると、

となります。

地図に枠を描く

gmt basemap -J[投影法][ヨコの長さ]/[タテの長さ] -R[描画範囲] -B[x|y|z][a][f][g][+l”label”] -B[WSEN][+t”title”]

投影法については下記参照。基本はメルカトル図法(-JM)で大丈夫。

記号 図法
-JC カッシーニ図法
-JJ ミラー円筒図法
-JM メルカトル図法
-JO 斜めメルカトル図法
-JQ 等距円筒図法
-JT 横メルカトル図法
-JU ユニバーサル横メルカトル図法
-JY 基本円筒図法
-JA ランベルト正積方位図法
-JE 正距方位図法
-JF 心射図法
-JG 正射図法
-JS 一般平射図法
-JB アルベルス正積円筒図法
-JD 正距円筒図法
-JL ランベルト正角円錐図法
-JH ハンメル図法
-JI 正弦曲線図法(サンソン図法)
-JK エッケルトIV及びVI図法
-JN ロビンソン図法
-JR ヴィンケル第3式図法
-JV ファン・デア・グリンテン図法
-JW モルワイデ図法

たとえば、

  • 投影法はメルカトル図法
  • ヨコの長さは12cm
  • 描画範囲は「北緯20度・東経120度~北緯40度・東経150度」
  • 目盛り間隔はおまかせ
  • Japanというタイトルを付ける

という地図の枠を作成する場合は、

#!/bin/bash
gmt begin plot jpg
    gmt basemap -JM12 -R120/150/20/50 -Bafg -BWSNE+t"Japan"
gmt end

となり、この結果が、

となります。

なお、地図のサイズは縮尺でも指定できます。
たとえば、2500万分の1の上の地図を描きたい場合は、

#!/bin/bash
gmt begin plot jpg
    gmt basemap -Jm1:25000000 -R120/150/20/50 -Bafg -BWSNE+t"Japan"
gmt end

とすればOKです。

basemapは不要?

実は、gmt basemapを使わなくても図が描けたりします。
個人的にはスクリプトが汚くなるので、おすすめしていません。

たとえば、先ほどの、

  • 投影法はメルカトル図法
  • ヨコの長さは12cm
  • 描画範囲は「北緯20度・東経120度~北緯40度・東経150度」
  • 目盛り間隔はおまかせ
  • Japanというタイトルを付ける

は海岸線を描く、gmt coastを用いて、

#!/bin/bash
gmt begin japan png
    gmt coast -JM12 -R120/150/20/50 -Bafg -BWSNE+t"Japan" -Df -W0.05
gmt end

を実行すれば、

と一気に描けます。楽をしたい人にはお勧めです。

コメント

スポンサーリンク