Home

Matplotlibにおける日本語フォント

 

Matplotlibに登録されているフォント名のリストを調べるスクリプトをリスト1のように作成してみた。

 

リスト1

 

import matplotlib.pyplot as plt

import matplotlib.font_manager as mf

 

fnts = [ f.name for f in mf.fontManager.ttflist]   #   フォント名のリスト

 

try:

    pos = 0

    while True:

        plt.figure(figsize = (12, 7))

        plt.title(f'From {pos} to {pos+29}, Total = {len(fnts)}\n')

        plt.plot([0, 20, 20, 0, 0], [0, 0, -10, -10, 0], lw = 0)

        plt.xticks([])

        plt.yticks([])

        for i in range(15):

            plt.text(1, -0.7*i, '日本語です' + ':' + fnts[pos + i],

                     fontfamily = fnts[pos + i], fontsize = 16)

        for i in range(15):

            plt.text(10, -0.7*i, '日本語です' + ':' + fnts[pos + 15 + i],

                     fontfamily = fnts[pos + 15 + i], fontsize = 16)

        plt.show()

        if input('Go to the next set? (y/n) ') != 'y':

            break

        else:

            pos += 30

except Exception as e:

    plt.show()

    print(e)

 

 

リスト1のスクリプトを実行すると図1のように日本語文とその表示に使われたフォント名が表示される。フォントが日本語に対応していない場合はまともな表示にはならない。

図1

 

図1のフォームを右上角のX印をクリックして閉じると、端末に次のフォントのりすとを表示するかどうかの選択メッセージが表示される。

 

Go to the next set? (y/n)

 

次に進む場合は、yのキーを押してからEnterを押すと次のセットに進む。

 

Go to the next set? (y/n) y

 

図2に何回か進んだときの画面を示す。

図2

 

図2の画面で終了するときは、図2を閉じた後で提示される端末の選択メッセージでnを入力すればよい。

 

Go to the next set? (y/n) n

 

 

図2に示されているフォントSeicho Shonan Kaishoを用いて描画するスクリプト例をリスト2に示す。

 

リスト2

 

import matplotlib.pyplot as plt

 

plt.rcParams['font.family'] = 'Seicho Shonan Kaisho'

plt.plot([0, 10, 10, 0, 0], [0, 0, 5, 5, 0])

plt.text(2.5, 2.7, 'こんにちは!', fontsize = 30)

plt.show()

 

リスト2のスクリプトを実行すると図3のフォームが表示される。

図3

 

リスト1とリスト2のスクリプトファイルは、圧縮ファイルprgfiles.zipにまとめた。

 

グラフ描画についての説明を<岡本安晴「いまさら聞けないPythonでデータ分析」丸善出版>で行っている。

 

Home