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

matplotlib

はじめに

matplotlibの棒グラフを使用して、データの値によって棒の順番が自動的に入れ替わるアニメーションを作成する方法を解説します。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をリスト内包表記で適用し、データの値に応じた順序で表示されるようにします。

最後に ax.bar(index, height, color=colors) で棒グラフをプロットします。

アニメーションの表示

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

update関数内の「sort_ind = np.argsort(data[:1+num,:].sum(axis=0))」の最後尾に「[::-1]」を追加することで、降順で表示される棒グラフアニメーションを作成できます。

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

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

まとめ

本記事では、matplotlibを使って値の大きさに応じて自動的に順番が入れ替わる棒グラフアニメーションの作成方法を紹介しました。FuncAnimationの基本的な使い方からデータの並べ替え処理まで、実装のポイントを解説しています。このテクニックを活用することで、時系列データの変化をより直感的に理解できる視覚化が可能になります。

参考

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

コメント