Matplotを使ってグラフを描いた場合、環境によって文字が表示されないことがあります。 そんな時には、好きなフォントを設定してみましょう。
フォントを指定しない場合
まずは普通にsinグラフを描いてみましょう。
import numpy as np import matplotlib.pyplot as plt # x軸の範囲を設定 x = np.linspace(-np.pi, np.pi, 300) # sinのグラフを描画 plt.plot(x, np.sin(x)) # グラフのタイトルの設定 plt.title('Sin(x) のグラフ') # x軸、y軸のラベルを設定 plt.xlabel('x') plt.ylabel('y') # グラフを表示 plt.show()
これで描画すると、こう表示されます。「Sin(x) のグラフ」のなかの「のグラフ」の文字が豆腐になってしまっていますね……。
フォントを指定した場合
そこで、ヒラギノフォントを指定してみましょう。 (ついでに、retina解像度で表示するための設定も追加。)
import numpy as np import matplotlib.pyplot as plt import matplotlib.font_manager as fm # retina解像度で表示するための設定 %config InlineBackend.figure_format = 'retina' # ヒラギノを指定する hiragino_font = fm.FontProperties(fname='/System/Library/Fonts/ヒラギノ角ゴシック W0.ttc') plt.rcParams['font.family'] = hiragino_font.get_name() # x軸の範囲を設定 x = np.linspace(-np.pi, np.pi, 300) # sinのグラフを描画 plt.plot(x, np.sin(x)) # グラフのタイトルの設定 plt.title('Sin(x) のグラフ') # x軸、y軸のラベルを設定 plt.xlabel('x') plt.ylabel('y') # グラフを表示 plt.show()
日本語の文字がちゃんと表示されて、Retina指定でグラフもくっきり表示されていますね。
システムのフォントの取得
システムで利用可能なフォントの取得はこれで大丈夫。
import matplotlib.font_manager as fm # フォントのリストを取得 font_list = fm.findSystemFonts() # フォントを表示 for font in font_list: print(font)