[matplotlib] 2.matplotlibで画像つき円グラフ

matplotlib
スポンサーリンク
スポンサーリンク

pythonのmatplotlibを使って画像つき円グラフを作成する

データはchromeの恐竜ゲームの死因。
Chromeでchrome://dinoにアクセスすればオンラインでも遊べます。

Deadが死因で、サボテンに当たって死んだ場合は”sabo”でそのあとの数は生えてるサボテンの数。
鳥に当たって死んだ場合は”bird”でそのあとの”h,m,l” は鳥の飛んでいる高さを表す。(h: high, m: middle, l: low)

DateDead
2018-09-09
bird_m
2018-09-10bird_h
2018-09-11sabo_4
2018-10-02sabo_1
スポンサーリンク

コード

でできる図。

Chrome恐竜ゲームのScore(9/9〜10/2)
スポンサーリンク

解説

データの集計

sabo_num = data['Dead'].str.contains('sabo').sum()

[dead]の列で要素の一部に”sabo”を含むデータの総数。

画像の読み込み

img_c = plt.imread('image/plant_cactus.png')

plt.imreadで画像の読み込み。

円グラフ

plt.axis('equal')

グラフの形を正方形にして円が楕円になるのを防ぐ。

ax.pie(data, labels=label,autopct="%.1f%%", labeldistance=0.4)

autopct 各データの割合を%で表示。”%.1f%%”で##.#%のかたちで表示。整数で表示したい場合は”%d%%”とする。
labeldistance ラベルの位置を指定, 0が中心で1が外周。1.1とかにすれば外側にラベルを置ける。

画像の挿入

imagebox = OffsetImage(img_c, zoom=0.3)

画像をimageboxにいれる。大きさはzoomで調整可能。

im_sabo = AnnotationBbox(imagebox, (-0.7, 0),
xybox=(-1.5, 0),
xycoords='data',
boxcoords="data",
pad=0.3,
arrowprops=dict(arrowstyle="simple, head_width = 0.4, head_length = 0.4",
                  lw=0.1,fc="0", ec="0"))

AnnotationBboxで画像を挿入。(-0.7,0)が矢印の先端の位置。(-1.5,0)が画像の位置。
xycoords,boxcoordsは基準座標の設定、円グラフで”data”とした場合、中心0の半径1の円となるので、左端が(1,0), 右端が(-1,0), 上端が(0,1), 下端が(0,-1)となる。
padは画像とその枠との間隔。
arrowpropsで矢印の設定, arrowstyleは全部文字列でつながっているので注意が必要。矢印の線の太さ(lw)はarrowstyleではない。fc,ecは”0”で黒くなる。

参考

python 3.6.5
pandas 0.23.4
matplotlib 2.2.3

スポンサーリンク
matplotlibpython
スポンサーリンク
この記事をシェアする
sabopy.comをフォローする
スポンサーリンク
サボテンパイソン

コメント