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”を付けると日。
目盛り間隔の設定の詳細は公式ドキュメント参照
たとえば、
- ヨコ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
を実行すれば、
と一気に描けます。楽をしたい人にはお勧めです。
コメント