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)
円グラフのスタート位置を指定、データを大きい順に、割合表示、割合の表示位置指定
まとめ
円グラフも描画するだけなら一瞬ですが、きれいに描画するのは色々大変です