機械学習とその他

機械学習したいマン

matplotlibで円グラフを描画する

アドベントカレンダー6日目です。
adventar.org

matplotlibで円グラフを描画する

pythonで円グラフを描画したくて、matplotlibを使いました。
その際にいろいろいじって試したりしたのでそれについて書きます。
ソースコードは以下にあります。


描画の準備

使うライブラリのimport

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
from collections import Counter

データの準備

1000までの乱数を生成し、それを10倍し、int型に変換することで0~10の整数を1000個作成します。

ary = np.random.rand(1000)
ary *= 10
ary = ary.astype(int)

数値の出現回数を数え、それを出現回数順に並び替えます。

count = Counter(ary)
ranked_data = count.most_common()

ラベルとデータを切り分けます。

labels = [x[0] for x in ranked_data]
values = [x[1] for x in ranked_data]

ここまでがデータの準備でした。

使用した機能

  • plt.axis('equal')

図が楕円になるのを真円に直す

  • plt.figure(figsize=(5,5), dpi=100)

図のサイズを指定、dpiを変える

  • plt.title('pie')

図のタイトルを指定

  • plt.savefig("pie.png",bbox_inches='tight')

図の保存、きれいにできるようにする

  • plt.subplots_adjust(left=0, right=1.2)

凡例を作るためのスペース作成

  • plt.pie(values, startangle=90, counterclock=False, autopct='%.1f%%', pctdistance=1.15)

円グラフのスタート位置を指定、データを大きい順に、割合表示、割合の表示位置指定

まとめ

円グラフも描画するだけなら一瞬ですが、きれいに描画するのは色々大変です