はじめに
matplotlibの棒グラフ(matplotlib.pyplot.bar)を用いて、要素の順番が変化する棒グラフアニメーションをFuncAnimationで表示する方法について解説する。
コード
解説
モジュールのインポート
データの生成
ランダムなデータとインデックスと色リストを作成する。
アニメーションの設定
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]として逆順にすることで降順棒グラフアニメーションとなる。
コードをダウンロード(.pyファイル) コードをダウンロード(.ipynbファイル)参考
matplotlib.pyplot.bar — Matplotlib 3.1.2 documentation
matplotlib.animation.FuncAnimation — Matplotlib 3.9.2 documentation
コメント