Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
3
Help us understand the problem. What is going on with this article?
@azumabashi

VS Code + matplotlib で日本語のグラフを表示する

More than 1 year has passed since last update.

前回「VS Code で Jupyter を動かしてみる」をやってみましたがグラフ表示の matplotlib での日本語表示がうまくいきませんでした。
いろいろ調べて出来るようになったので記録しておきます。
方法は1つだけではなさそうですが、これでいくことにしました。

1. 環境

OS:Windows 10
VS Code:1.43.2
拡張機能:Anaconda Extension Pack 1.0.1
Pythonインタープリター:3.7.3 64-bit

2. ビフォー

import matplotlib.pyplot as plt

flg, ax = plt.subplots()

x = [1, 2, 3, 4, 5]
y = [3, 6, 4, 8, 5]
labels = ['バナナ', 'パイナップル', 'みかん', 'いちご', 'メロン']
ax.bar(x, y, tick_label=labels, label='好きなフルーツ')
ax.legend()

plt.show()

上のソースを実行したところ、日本語表示したいところが長四角の豆腐になってしまいます。
image.png

Jupyter notebook で試してみても状況は同じです。
image.png

3. 対応

3-1.フォントファイルの取得

OSにあらかじめインストールされているフォントを使用してもいいのですが、Linuxなどの環境でも同じフォントを使用したいのでIPAexゴシックを使用することにしました。
https://ipafont.ipa.go.jp/ からダウンロードします。
image.png

これを解凍してフォントファイル(拡張子 tff)を取得します。
image.png

ipaexg.tff は IPAexゴシック
ipaexm.tff は IPAex明朝
です。

3-2.フォントファイルの配置

matplotlibの設定ファイルを探します。

import matplotlib as mpl
print(mpl.matplotlib_fname())

私の環境の場合はここにありました。

C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\mpl-data\matplotlibrc

上記からの相対パスとしての
../fonts/ttf
すなわち

C:\ProgramData\Anaconda3\lib\site-packages\matplotlib\mpl-data\fonts/ttf

にフォントファイル ipaexg.ttf を配置します。

3-3.matplotlib側での設定

C:\Users\<username>\.matplotlib\fontlist-v300.json

を削除します。
キャッシュファイルがあればそれも削除します。

ここでいったん VS Code を再起動しておきます。

4.アフター

最初のソースにフォントを明示的に指定するために

plt.rcParams['font.family'] = 'IPAexGothic'

を挿入します。

import matplotlib.pyplot as plt

plt.rcParams['font.family'] = 'IPAexGothic'
flg, ax = plt.subplots()

x = [1, 2, 3, 4, 5]
y = [3, 6, 4, 8, 5]
labels = ['バナナ', 'パイナップル', 'みかん', 'いちご', 'メロン']
ax.bar(x, y, tick_label=labels, label='好きなフルーツ')
ax.legend()

plt.show()

うまくいきました。日本語が表示されました。
image.png

Jupyter notebook でも試してみます。大丈夫でした。
image.png

5.このあとやりたいこと

scikit-learn を用いて分析したデータをグラフにしてみたい。

6.参考にさせていただいたQiitaの先輩

@Kanatani28 さん https://qiita.com/maroKanatani/items/3b080c639395bba7795a
@yniji さん https://qiita.com/yniji/items/3fac25c2ffa316990d0c

3
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
azumabashi
感染症関連システムで主にイントラネット、通信処理を担当してきました。 病院、検査センターでのシステム構築のために全国を巡って戻ってきたら、まだまだ学ぶべきことが沢山あることに気が付いて転職。 Qiitaを通したアウトサイドイン、インサイドアウトを繰り返しながら主にIoT、AIのスキルアップを目指しています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
3
Help us understand the problem. What is going on with this article?