nokの雑記

技術的な内容にしようと思ったけど無理でした。

seabornでの日本語フォントメモ

備忘録.

書いてる途中でめっちゃいい感じの記事を発見しました.ぜひこちらも参考にどうぞ qiita.com

tl;dr

  • seabornを使っている際にmatplotlib.pyplot.rcParamsをいじっていても日本語が豆腐化する件
  • seabornのimportでフォントの設定が殺されるので,その後にもう一度フォントを設定しなおす

環境:

  • Python 3.6.1 (mac x86_64 / Anaconda)
  • jupyter notebook (たぶん素のPythonでも同じだと思います)

まずはこんな感じのやつを実行してみます.

%config InlineBackend.figure_formats = {'png', 'retina'}

%matplotlib inline
import matplotlib.pyplot as plt

plt.rcParams['font.family'] = 'Meiryo'
plt.rcParams['font.size'] = 20

import seaborn

import numpy as np
---------------------------
fig = plt.figure()
ax = fig.add_subplot(111)

ax.plot(np.random.randn(10,10))
ax.set_xlabel("x軸")
ax.set_ylabel("y軸")

すると表示は…… f:id:nok0714:20180202131956p:plain

seabornスタイルにこそなっていますが,見事に豆腐化しています.試しにseabornのimport部分をコメントアウトしてみましょう.
カーネルを再起動して…(ちなみに再起動しない場合はfont.sizeが無視されます)

f:id:nok0714:20180202132145p:plain

表示されましたね.実はseabornをimportすると自動的に図がseabornスタイルになるのですが,この際matplotlibの設定を上書きしてしまうのです.
なので,以下の一連の部分を変更します.

plt.rcParams['font.family'] = 'Meiryo'
plt.rcParams['font.size'] = 20

import seaborn
↑↑↑↑↑↑↑↑これを,このように↓↓↓↓↓↓↓↓
import seaborn

seaborn.set(font=["IPAexGothic"], font_scale=10/6)

すると,このように!

f:id:nok0714:20180202133126p:plain

※seabornはfont.sizeを使うのではなくfont_scaleで調整するようです.