コンテンツにスキップ

第4章 テキストの追加・設定

特殊な文字の入力方法

上付き・下付き文字

'@+<文字>@+'
'@-<文字>@-'

上記のいずれかを使う(すなわち「@+」または「@-」で挟む)と,ラベルやタイトルにおいて上付き,下付き文字を入力できる.

LaTeX形式での数式

@[<text>@[

ただし,事前にLaTeXがインストールした上で,パスを通してどこからでもLaTeXのコマンドを呼び出せるようにしておく必要がある.

LaTeXが正しくインストールされていないと 「 latex is not installed or not in your executable path - cannot process LaTeX to DVI. 」 というエラーが出て失敗する.

ギリシャ文字

数式に使われるギリシャ文字は,フォントの種類を指定することで利用できる.

@
<!-- 12%<text>@%% -->
または
@~<text>@~

文字番号12がギリシャ文字のフォントであるため,これを用いるとギリシャ文字を入力できる.ギリシャ文字は対応するアルファベットで指定する.例えば「{{< math >}} \(\tau」\) {{< /math >}}なら「t」と入力する.

「度(°)」

@.

普通に「°」と入力しようとしても文字化けしてうまくいかない.しかし「@.」と入力すると「°」を入力することができる.ラベルでも軸でもどこでも使える.

Octal codeによる入力

文字コードによる入力もできる(図--. https://docs.generic-mapping-tools.org/6.4/cookbook/octal-codes.htmlより).

数学記号の入力もこれでとりあえずは可能.文字によってはもっと楽な方法もあるだろうが.

Symbolは@~で挟む.ZapfDingbatsは@\

"@~  <code>@~"
または
r"@~\<code>@~"
fig/octalcode.png
Octal codeの入力用テーブル.

文字のスタイル設定

文字スタイルの一括調整

pygmt.configを使って,with構文内のメソッドで描画される文字のスタイルを一括で指定できる. 文字サイズは数値,文字列のいずれで与えても良い. ただし文字列で与えればp; pointやc; cm, i; inchのように単位付きで指定できる.

with pygmt.config(
    FONT = <文字サイズ>
    ):
    ...

設定項目は以下の通り.

  • FONT: すべての文字
  • FONT_ANNOT: 軸のアノテーションの文字
  • FONT_LABEL: 軸のラベルの文字.textメソッドの文字にも適用されるようだ.
  • FONT_TITLE: 図のタイトルの文字

例:

import pygmt
import numpy as np
print(pygmt.__version__)
rgn = [0,100,0,50]
prj = "X6c/3c"

fig = pygmt.Figure()
with pygmt.config(
    FONT_TITLE = "12p,red",
    FONT_ANNOT = "10p,blue",
    FONT_LABEL = "10p,Helvetica-Oblique,black",
):
    fig.basemap(
        region = rgn,
        projection = prj,
        frame = [
            "xa30f10g10+lx label",
            "ya20f10g10+ly label",
            "WSne",
        ],
    )
    fig.basemap(
        frame = "+tTitle",
    )
    fig.text(
        x = 50,
        y = 25,
        text = "text",
        angle = 45,
        justify = "CM",
    )
    fig.show()
    fig.savefig("../fig/textconfig.png")

出力:

v0.14.0

fig/textconfig.png
pygmt.configによる文字スタイルの設定

等値線のテキストの設定

grdcontour()で描かれる等値線のアノテーションの文字サイズは, pygmt.configでは設定できない. grdcontour()のアノテーションの文字サイズは,grdcontourメソッドのannotation引数内で指定する:

fig.grdcontour(
    ...,
    annotation=<間隔>+f<フォントサイズ>,
    ...,
    )

図のタイトル

タイトルとサブタイトル

frame引数で図のメインタイトルとサブタイトルを設定できる. frameでx軸やy軸の設定と同時に与えるとうまくいかないことがあるが, その場合はタイトルだけを個別にfig.basemapでプロットすれば良い.

fig.basemap(
    frame = '+t<タイトル>+s<サブタイトル>',
)

タイトルの位置

タイトルの上下位置はpygmt.configによって調整可能. 横方向の位置は調整できないようだ.

with pygmt.config(
    MAP_TITLE_OFFSET = '<y offset>',
):
    ...

値を正にすると上に,負にすると下に移動する.

例:offsetによるタイトル位置の比較

import pygmt
import numpy as np
print(pygmt.__version__)
rgn = [90,180,0,60]
prj = "M?"

fig = pygmt.Figure()
with fig.subplot(
    nrows = 1,
    ncols = 2,
    figsize = ("8c", "3c"),
    margins = "0.5c",
    autolabel = False,
):
    with fig.set_panel(panel = 0):
        with pygmt.config(
            FONT_TITLE = "10p,red",
            MAP_TITLE_OFFSET = "0p",
        ):

            fig.coast(
                land = "grey70",
                region = rgn,
                projection = prj,
                frame = [
                    "xafg+lx label",
                    "yafg+ly label",
                    "WSne",
                ],
            )
            fig.basemap(
                frame = "+tTitle (offset = 0p)",
            )

    with fig.set_panel(panel = 1):
        with pygmt.config(
            FONT_TITLE = "10p,red",
            MAP_TITLE_OFFSET = "-5p",
        ):

            fig.coast(
                land = "grey70",
                region = rgn,
                projection = prj,
                frame = [
                    "xafg+lx label",
                    "yafg+ly label",
                    "WSne",
                ],
            )
            fig.basemap(
                frame = "+tTitle (offset = -5p)",
            )

    fig.show()
    fig.savefig("../fig/titleoffset.png")

出力:

v0.14.0

fig/titleoffset.png
MAP_TITLE_OFFSETによるタイトルの位置調整