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

matplotlib

はじめに

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

コード

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

解説

モジュールのインポート

データの生成

ランダムなデータとインデックスと色リストを作成する。

アニメーションの設定

ax.cla()で古いグラフを消す。
sort_ind = np.argsort(data[:1+num,:].sum(axis=0))で昇順にソートしたときのインデックスを取得する。data[:1+num,:].sum(axis=0)は5列あるデータの1+num(numがアニメーションで変化)までの合計値であり、合計値の大きさに応じて順序が変化する。

index = np.array([ind[sort_ind[i]] for i in range(5)]) によって、棒グラフのインデックスにsort_indを適用する。棒グラフの棒の高さ(height)、棒の色(c_list)にもsort_indをindexと同様に、リスト内包表記で処理する。

ax.bar(index,height,color=colors)で棒グラフをプロットする。

アニメーションの表示

降順に並び替えるアニメーション

update関数内のsort_ind = np.argsort(data[:1+num,:].sum(axis=0))の最後尾に[::-1]として逆順にすることで降順棒グラフアニメーションとなる。

参考

matplotlib.pyplot.bar — Matplotlib 3.1.2 documentation
matplotlib.animation.FuncAnimation — Matplotlib 3.3.2 documentation

コメント