【PyGMT】枠や目盛り線を前面にする

PyGMTを初めて使ってみたのですが、coastで地図を描いたら、枠や目盛りよりも塗りが前面になってしまい戸惑いました。

結論から言うと、枠や目盛りを前面にするには、coastより先にframeの設定を書かないようにすればOKでした。*1

例を挙げます。以下は公式ページのサンプルスクリプトですが、陸域の塗りが枠・目盛り・目盛り線よりも前面に来ています。

import pygmt

fig = pygmt.Figure()

fig.basemap(
    region=[-150, -30, -60, 60],
    projection="I-90/15c",
    frame="afg"
)
fig.coast(
    borders=["1/0.5p,black", "2/0.5p,red", "3/0.5p,blue"],
    land="gray"
)

fig.savefig('test.jpg')

f:id:sfuno:20210403120248j:plain


coastより先にbasemapが書かれていたところを、coastですべてのパラメータを指定すると、枠・目盛り・目盛り線が前面になりました。

import pygmt

fig = pygmt.Figure()

fig.coast(
    region=[-150, -30, -60, 60],
    projection="I-90/15c",
    frame="afg",
    borders=["1/0.5p,black", "2/0.5p,red", "3/0.5p,blue"],
    land="gray"
)

fig.savefig('test2.jpg')

f:id:sfuno:20210403120251j:plain

*1:よく考えると、そもそもGMT本家もこういう仕様だった気が…