[matplotlib animation] 60. 要素の大きさによって順番が変化するドーナツグラフのアニメーション

matplotlib Animation

はじめに

matplotlibの円グラフ(matplotlib.pyplot.pie)を用いて、要素の順番が変化するドーナツグラフのアニメーションをFuncAnimationで表示する方法について解説する。

コード

コードをダウンロード(.pyファイル)コードをダウンロード(.ipynbファイル)

解説

モジュールのインポート

データの生成

ランダムなデータとインデックスを作成する。色リストは、cmapからplt.get_cmap(“tab20b”) で取得して、cmap(np.arange(5)*5)で[0,5,10,15,20]の色を取得する。cmap[#]ではなく、cmap(#)で取得できる。

sizeはドーナツグラフのドーナツの幅となる。

アニメーションの設定

ax.cla()で古いグラフを消す。
data[:1+num,:].sum(axis=0)は5列あるデータの1+num(numがアニメーションで変化)までの合計値であり、合計値の大きさに応じて順序が変化するようにする。

sort_ind = np.argsort(data_)で昇順にソートしたときのインデックスを取得する。

index = np.array([ind[sort_ind[i]] for i in range(5)]) によって、ドーナツグラフのラベルにsort_indを適用する。ドーナツグラフのデータ(data_)、色(colors)にもsort_indをindexと同様に、リスト内包表記で処理する。

ax.pie(data_, radius=1, colors=colors_,labels=index, wedgeprops=dict(width=size, edgecolor=’w’),autopct=’%.0f%%’,counterclock=False)でドーナツグラフをプロットする。
radiusはドーナツの外側の半径で、wedgeprops=dict(width=size)でドーナツの幅を設定する。
autopctで全体を100%としたときの各データの比率が表示される。
counterclock=Falseで3時の位置から時計回りにデータが表示される。

アニメーションの表示

参考

[matplotlib] 29. ドーナツ状円グラフ
matplotlibでドーナツグラフを作成する方法について説明する。
matplotlib.pyplot.pie — Matplotlib 3.1.2 documentation

コメント