第2章 必須手順

第2章 必須手順

Figureの生成

import pygmt
fig = pygmt.Figure()

Figureオブジェクトを作成してから作図を進める.

図法

projection引数に与える投影図法. 最初の描画系メソッドの引数にregion(\rightarrow 第*※相互参照無効*節)とともに指定する必要がある.

直交座標

'X<size>'

数学のグラフなど. 値域は地図と同様にregion引数で与えるが,緯度経度の値に限らず自由に指定できる. 縦横比が自由な図法の場合,サイズは「/」で区切ると縦横別に指定できる.また,

X10c/-5c

のようにサイズに負の値を指定すると,その方向の軸を反転させられる.

メルカトル図法

'M<size>'

regionの緯度は{{< math >}} $\pm 90^\circ$ {{< /math >}}を含んではいけない.

アルベルス正積円錐図法

中緯度で東西に広がる地域に適する.米国,欧州,オーストラリア等.米国地質調査所がよく使用するらしい.

'B<lon0>/<lat0>/<lat1>/<lat2>/<size>'

国土地理院の「全国都道府県市区町村別面積調」に用いられているらしい.中央経線"E" 135°,原点緯度"N" 35°,標準緯線"N" 33°,“N” 44°としている(https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AB%E3%83%99%E3%83%AB%E3%82%B9%E6%AD%A3%E7%A9%8D%E5%86%86%E9%8C%90%E5%9B%B3%E6%B3%95).

任意の図法で矩形地図

https://docs.generic-mapping-tools.org/latest/cookbook/map-projections.html#rectangular-map

矩形でない図法でも矩形地図にできる. projectionの設定はそのままに,regionを次のように指定する.

region = '<左下のlon>/<左下のlat>/<右上のlon>/<右上のlat>+r'

矩形領域に収める領域の左下の座標と右上の座標を与え,最後に「+r」(rectangularの頭文字) を付す.

例)アルベルス正積円錐図法の矩形図.出力:図*※相互参照無効*

import pygmt
# rectangular
rgn = '139/35/145/42+r'

prj = 'B135/35/33/44/5c'
fig = pygmt.Figure()
fig.coast(
    region = rgn,
    projection = prj,
    shorelines = '0.2p',
    land = 'grey80',
    frame = 'agf'
)
fig.show()
アルベルス正積円錐図法を矩形にプロットした図.

アルベルス正積円錐図法を矩形にプロットした図.

描画範囲の指定

一番初めの描画系メソッドの引数にはregion, projection(\rightarrow 第*※相互参照無効*節)を指定する必要がある.

直交座標の場合はともかく,地理的な投影図法の場合,座標の指定で入力する値は「度」単位の十進法で扱われる.だが地理的な投影図法の場合は「度分秒」単位でプロットしたい場合も多い.これについては第*※相互参照無効*節に記す.

手動指定

region = [<xmin>,<xmax>,<ymin>,<ymax>]
または
region = '<xmin>/<xmax>/<ymin>/<ymax>'

描画範囲は,coast, plotメソッドなどのregion引数に与える. 指定は配列[]または文字列によって行う. [経度longitude(x軸)の始点・終点,緯度latitude(y軸)の始点,終点]の順に記す.

自動指定

region = 'a' # 上下左右に少し余白あり
または
region = 'e' # 厳密に描画範囲の最小・最大値の区間で切り取る

plot, grdcontourなど,何らかのデータをプロットするメソッドの中で使用する必要がある. そのメソッド内で与えられたデータに基づいて自動で描画範囲を決定する.

ただし1つのメソッドを元に描画範囲を決める必要がある. ゆえに複数の異なる範囲に分布するデータを複数のメソッドでプロットせねばならぬ場合は有効とは言えず, しかる場合には手動で範囲を指定するのが最善であろう.

図の表示・保存

show()とsavefig()はほぼ同じ時間がかかる. すなわちshow()とsavefig()を両方使うと処理の終了までにかかる時間が倍増するので注意. 時間のかかる描画であれば,どちらか一方だけを使うのが良い.

図の表示

pygmt.Figure.show()で表示可能. 1度これを使った後であっても そこにコマンドを続けて書き足すことは可能. なので必要であれば,図の途中経過をshowで確認することができる.

図の保存

pygmt.Figure.savefig()を用いる.

fig.savefig(
    fname = '<name>.<拡張子>',
    transparent = <True/False: 背景透過>
    dpi = <dpi: 解像度>
    show = <True/False>,
    crop = <True/False>,
    anti_alias = <True/False>,
    )

拡張子はpng, jpg, PDF, BMP, tif, eps, kmlに対応. ベクター形式の一種であるSVGで保存することはできない.公式マニュアルではpygmt.psconvert()でSVGに変換できるとされていたが,そこで使用されているghostscriptというソフトが脆弱性の問題でsvgの扱いを終了している.GMTでsvgを直接作るのはあきらめるしかなさそう.

デフォルトのdpiはPDFなら720, その他では300.