はじめに
matplotlibの円グラフ(matplotlib.pyplot.pie)を用いて、要素の順番が変化するドーナツグラフのアニメーションをFuncAnimationで表示する方法について解説する。
コード
解説
モジュールのインポート
データの生成
ランダムなデータとインデックスを作成する。色リストは、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時の位置から時計回りにデータが表示される。
アニメーションの表示
コードをダウンロード(.pyファイル)
コードをダウンロード(.ipynbファイル)
コメント