matplotlibを使って可視化したグラフの文字化け解消法。

Excelで描けるようなグラフを、pythonで描くことができます。

その機能を提供しているのがmatplotlibというパッケージ。

Excelで描けるものをスクリプト言語で描く意味は、主に自動化のためですかね…。

日々更新される類のデータを定期的に取得してグラフ化し、その画像をメールで送信するのを自動化するような用途で使えます。

ここでは例として、文部科学省が公表している国立私立大の授業料推移データを使います。

以下のようにdata.csvファイルとして保存します。(vimで空白を,に置換する等、適当に整形してあります)

国立私立それぞれの授業料実データ部分をpythonで読み取り、リスト化して、ラベル設定や判例表示設定など調整し、最後にgraph.pngに書き出しています。

その結果が以下の図です。

いわゆる豆腐ですね…。これはmatplotlibが日本語フォントを持たないためです。

ちょっと古い上、python2の情報ですが、How to set Helvetica as the default sans-serif font in Matplotlibでフォントの追加方法を解説しています。1

システムから日本語対応したフォントを引っ張ってきてもいいんですが、手持ちのマックにはttfフォントが見当たらなかったので、IPAフォントを頂きました。

ダウンロードしたzipファイルを解凍し、以下のようにコピーします。コピー先は環境に依るのでご注意を。

設定ファイルをホーム下にコピーして、それを編集します。

font.familyにフォント名を設定します。

ここで指定するのはフォントファイル名ではないのでご注意を。

open ipa.ttfのようにして、使いたいフォント名を確認してから設定してください。

キャッシュデータを削除します。

これで、次回import matplotlibした時に、キャッシュデータが自動的に生成され、日本語表示が可能になります。

先ほどのpythonスクリプトを再実行すると、以下のように豆腐が解消されているのがわかります。


  1. matplotlib標準のフォントが美しくない!とご立腹の様子 
スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする