日本語表示できない問題
Matplotlibでは、日本語を扱えるフォントが指定されていない場合に日本語を含んだプロットを出力すると、文字化け(◻︎
)が表示されてしまいます。
plt.figure()
plt.title("てすと")
日本語フォントをダウンロード
日本語を表示するには、日本語を扱うことのできるフォントをインストールする必要があります。
今回はみんな大好きメイリオをインストールします。
まずはフォントファイルをダウンロードします。
$ wget https://www.dropbox.com/s/zb7lub5c3zc8xgm/meiryo.lzh
ダウンロードしたファイルはlzh形式なので、対応するために「lhasa」をインストールし、解凍します。
$ sudo apt-get install lhasa
$ lha x meiryo.lzh (data_analysis) meiryo.ttc - Melted : ooooooooooooooooooooooooooooooooooooooooooooooooooooooooo meiryob.ttc - Melted : oooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
フォントを規定のディレクトリに移す
解凍して出てきた.ttc
ファイルを、~/.fonts
または /usr/share/fonts/
以下に移します(ユーザー間で使用するか否かによって決めましょう)。
chmod
で読み取り・実行権限も付けておきます。
$ sudo mkdir /usr/share/fonts/meiryo $ sudo mv meiryo.ttc meiryob.ttc /usr/share/fonts/meiryo $ sudo chmod 755 /usr/share/fonts/meiryo -R
インストールされたことを確認
fc-list
でインストール済みのフォントを一覧表示できます。
$ fc-list | grep Meiryo (data_analysis) /usr/share/fonts/meiryo/meiryob.ttc: Meiryo,メイリオ:style=Bold,Negreta,tučné,fed,Fett,Έντονα,Negrita,Lihavoitu,Gras,Félkövér,Grassetto,ボールド,Vet,Halvfet,Pogrubiony,Negrito,Полужирный,Fet,Kalın,Krepko,Lodia /usr/share/fonts/meiryo/meiryob.ttc: Meiryo,メイリオ:style=Bold Italic,Negreta cursiva,tučné kurzíva,fed kursiv,Fett Kursiv,Έντονα Πλάγια,Negrita Cursiva,Lihavoitu Kursivoi,Gras Italique,Félkövér dőlt,Grassetto Corsivo,ボールド イタリック,Vet Cursief,Halvfet Kursiv,Pogrubiona kursywa,Negrito Itálico,Полужирный Курсив,Tučná kurzíva,Fet Kursiv,Kalın İtalik,Krepko poševno,Lodi etzana /usr/share/fonts/meiryo/meiryo.ttc: Meiryo,メイリオ:style=Italic,Cursiva,kurzíva,kursiv,Πλάγια,Kursivoitu,Italique,Dőlt,Corsivo,イタリック,Cursief,Kursywa,Itálico,Курсив,İtalik,Poševno,Etzana /usr/share/fonts/meiryo/meiryo.ttc: Meiryo,メイリオ:style=Regular,Normal,obyčejné,Standard,Κανονικά,Normaali,Normál,Normale,レギュラー,Standaard,Normalny,Обычный,Normálne,Navadno,Arrunta
キャッシュファイルを削除
キャッシュファイルの格納場所はmatplotlib.get_cachedir()
で取得することができます。
import matplotlib matplotlib.get_cachedir() ## '/home/kimoton/.cache/matplotlib'
フォントを更新する際にはこのディレクトリをまるっと削除します。
$ rm -rf ~/.cache/matplotlib
フォントを設定してプロット
plt.rcParams['font.family']
に使用したいフォント名を指定することで、明示的にフォントを使用することができます。
plt.rcParams['font.family'] = 'Meiryo' plt.figure() plt.title("てすと")
デフォルトのフォントを変更
デフォルトのフォントを変更してしまいたい場合、matplotlibの設定ファイルを編集する必要があります。
まず下記により、matplitlibの設定ファイルを探します。
import matplotlib matplotlib.matplotlib_fname() ## '/home/kimoton/.config/matplotlib/matplotlibrc'
このファイルを開くと、249行目にフォントを指定している箇所があります。
コメントアウトされていますが、インストール仕立てはsans-serif
となっています。ここでfont.family : Meiryo
を指定します。
.
.
#font.family : sans-serif
.
.
↓
.
.
#font.family : sans-serif
font.family : Meiryo
.
.
すると、plt.rcParams
明示的にフォントを指定しなくてもメイリオが使用されるようになります!
plt.rcParams['font.family'] = 'Meiryo' plt.figure() plt.title("てすと")