Edited at

Pythonista3のmatplotlibで日本語を使う


Pythonista3のmatplotlibで日本語を使う

Pythonista3のmaplotlibには日本語のフォントがインストールされていないので,日本語を表示させようとすると豆腐になる。mpl-data/fonts/ttfにはフォントをコピーできないので、日本語フォントファイルを適当な場所に置いて、それを使うようにすれば下図のように日本語を使うことができる。

IMG_EC8053A23116-1.jpg


フォントファイルを自分の環境にコピーする


フォントの入手

TTFファイルとしてIPAゴシックフォントを使うことにする。

まず、以下の手順をPC上で実施する。



  • ここからIPAゴシック[IPAGTTC00303.zip]をダウンロードする。

  • ファイルを解凍してipaexg.ttfを取り出す。


  • ipaexg.ttfをiCloud Drive上のPythonsita3ディレクトリにコピーする。


フォント移動

次に、Pythonista3でipaexg.ttfをsite-packagesに移動する。ここではsite-packagesに移動しているが、Documentsディレクトリ上に自分が作成したディレクトリでもよい。ただし、後述のスクリプトでそのディレクトリ名に対応した書き換えが必要である。


  • Pythonista3でiCloudを選択して、Editメニューを実行。

IMG_05B9C67CAB24-1.jpg



  • ipaext.ttfを選択して、移動アイコンをクリック。

IMG_36B442746309-1.jpg


  • 移動先にsite-packagesを選択する。

IMG_8A73FC751115-1.jpg


日本語フォントを使ったスクリプト例

日本語を使うラベルなどでfont_managerのFontPropertiesを使ってフォントファイルを指定する。フォントファイルはパス名をすべて指定しなければならないので、ここではsys.pathを使ってDocuments/site-packagesの絶対パスを取得する。

import matplotlib.pyplot as plt

import numpy as np

# 日本語を使う
import sys
from matplotlib.font_manager import FontProperties
sitepath = [s for s in sys.path if s.endswith('Documents/site-packages')]
fp = FontProperties(fname = f"{sitepath[0]}/ipaexg.ttf", size = 14)

x = np.linspace(-10, 10, 100)
y = np.sin(x)

fig = plt.figure(figsize=(5,4))
ax = fig.add_subplot(111)
ax.plot(x, y, "r-")
ax.set_xlabel("X軸", fontproperties=fp)
ax.set_ylabel("サイン関数", fontproperties=fp)

fig.tight_layout()
plt.show()`

以上。