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

matplotlib Animation

はじめに

matplotlibの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を適用し、これらもリスト内包表記で処理します。

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ファイル)

まとめ

matplotlibのpie関数とFuncAnimationを組み合わせることで、データの変化に応じて要素の順番が動的に変わるドーナツグラフアニメーションを作成できます。sort_valuesを使ったデータの並べ替えと適切なカラーマッピングにより、視覚的に分かりやすい表現が可能です。

参考

[matplotlib] 29. ドーナツ状円グラフ
matplotlibを使用してドーナツ状円グラフを作成する方法を解説。pie関数のwedgepropertiesパラメータを活用した中央に穴のある円グラフの実装方法やカスタマイズのテクニックを紹介します。
matplotlib.pyplot.pie — Matplotlib 3.1.2 documentation

コメント