【matplotlib】bar_chart_raceライブラリで順位が入れ替わる棒グラフアニメーションを作成する方法[Python]

  • URLをコピーしました!
目次

bar chart race

前回、matplotlibでffmpegを使ってアニメーショングラフを作成する方法を紹介しました。

今回はbar_chart_raceライブラリを使って、順位が入れ替わる棒グラフアニメーション、いわゆるバーチャートレースを作成する方法を紹介します。

それでは始めていきましょう。

bar_chart_raceライブラリのインストール

まずはbar_chart_raceライブラリをインストールします。

インストールはいつも通りpipで行います。

pip install bar_chart_race

データの準備

次にバーチャートレースを作成するためのデータを準備します。

データは列が各項目、行が時系列のデータとなるようにします。

ということでこんな感じに準備してみました。

import pandas as pd
import random

countries = ["Japan", "US", "France", "Germany", "UK", "China", "Australia"]
startvalues = [120, 250, 50, 20, 60, 300, 150]

cycle = 100

df = pd.DataFrame()

for country, startval in zip(countries, startvalues):
    val_list = [startval]
    times = random.randint(1, 5)
    for _ in range(cycle):
        val_list.append(times*random.randint(0, 10)+val_list[-1])
    df[country] = val_list
    
print(df)

実行結果
     Japan    US  France  Germany    UK  China  Australia
0      120   250      50       20    60    300        150
1      126   252      71       36    68    340        156
2      136   260      71       54    68    390        156
3      144   276      74       64   108    430        162
4      152   288     101       78   108    450        180
..     ...   ...     ...      ...   ...    ...        ...
96     602  1188    1364      916  2104   3115       1758
97     604  1196    1388      922  2128   3160       1788
98     605  1200    1394      928  2140   3160       1812
99     613  1208    1397      932  2164   3205       1815
100    614  1220    1400      946  2164   3230       1842

[101 rows x 7 columns]

列が国の名前で最初の行が初期値、そしてその後はランダムに数値を足していくというデータにしてみました。

バーチャートレースを作成

それではバーチャートレースを作成してみましょう。

ちなにみバーチャートレースでデフォルトでアニメーションを作成する場合、内部でmatplotlibからffmpegが使われますので、ffmpegを事前にインストールして、matplotlibに連携しておいてください。

方法は前回説明していますので、よかったらこちらの記事をご覧ください。

バーチャーレースを作成するには「bar_chart_raceのbcr」をインポートして、「bcr.bar_chart_race(df=データフレーム, filename=’ファイル名.mp4′)」で作成できます。

import bar_chart_race as bcr
import pandas as pd
import random

countries = ["Japan", "US", "France", "Germany", "UK", "China", "Australia"]
startvalues = [120, 250, 50, 20, 60, 300, 150]

cycle = 100

df = pd.DataFrame()

for country, startval in zip(countries, startvalues):
    val_list = [startval]
    times = random.randint(1, 5)
    for _ in range(cycle):
        val_list.append(times*random.randint(0, 10)+val_list[-1])
    df[country] = val_list
    
bcr.bar_chart_race(df=df, filename='python-matplotlib55-1.mp4')

たったあれだけのコマンドでバーチャートレースが作成できました。

経時的な変化を見るにはなかなかいい手法だと思いますので、よかったら使ってみてください。

次回はバーチャートレースのオプションを見ていきましょう。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次