2017年2月5日日曜日

【matplotlib】円グラフを作成する

  • 公開日:2017年02月05日

記事概要

matplotlibで円グラフを作成する方法をまとめた記事です。
色々とハマった箇所があったので、ポイントを整理しました。

環境

  • Ubuntu 14.04.4
  • Python 3.5.2 :: Anaconda custom
  • matplotlib 1.5.3

作成したグラフ

以下のような円グラフを作成しました。

Newtonのアルツハイマーの特集の感想ページを作るのに、グラフ作成ツールとしてmatplotlibを使いました。

はまったのは以下の点です。

  • 日本語文字化け
  • 余白不足
  • 円の形

対応方法を以下に記述します。

日本語

matplotlibはデフォルトだと日本語が利用できません。以下のように文字化けします。

matplotlibで日本語を使用するには、フォントの導入が必要です。
独立行政法人情報処理推進機構がIPAフォントをオープンソースで用意してくれているので、これをダウンロードして使います。

ダウンロードしたフォントは、実行ファイルと同じフォルダに置きます。

次に、コードでフォントの使用を実装します。

sample1.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import matplotlib.font_manager

FONT_PATH = 'ipaexg.ttf'

prop = matplotlib.font_manager.FontProperties(fname=FONT_PATH)

label = [u'アルツハイマー型認知症', u'脳血管障害型認知症', u'レビー小体型認知症', u'その他']

patches, texts, autotexts = plt.pie(x, labels=label, counterclock=False, startangle=90, autopct="%1.1f%%")
# 日本語化(使わないと文字化け)
plt.setp(texts, fontproperties=prop)

plt.pieは (patches, texts, autotexts)のタプルを返却します。textsがlabalデータなので、この変数にフォントを割り当てています。

プログラムを実行します。

日本語で文字が出力されました。

余白調整

matplotlibは余白調整をしないと、ラベルが画像からはみ出してしまいます。

余白はコードで調整できます。

sample1.py

plt.subplots_adjust(left=0.28, bottom=0.1, right=0.72, top=0.9)

パラメーターは画像の位置です。ドキュメントに詳しい説明があります。画像を何度も出力しながらパラメーターを調整しましょう。

プログラムを実行します。

余白が調整されて出力されました。

円にする

デフォルトは楕円です。コードで円にすることができます。

sample1.py

# 円にする(つかわないと楕円)
plt.axis('equal')

これは画像を使った説明は不要でしょう。

まとめ

最近は画像(動画)学習をしています。せっかくの機会なのでExcelよりプログラムを使った方が便利だし早いだろうと思ってmatplotlibを利用したのですが、Excelはやっぱり便利ということが再認識できました。
とはいえ、画像や数学の知識が蓄積すれば、プログラムの方が多くのことを素早く実現可能なことも分かりました。

しばらくは、画像と映像を中心にした学習をしていきたいと思います。

以上です。

PICK UP オススメ書籍

参考記事

この記事がお役にたちましたらシェアをお願いします

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

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...