【Python】bar_chart_raceで動くグラフを作る方法|データ可視化をわかりやすく解説

【Python】bar_chart_raceで動くグラフを作る方法|データ可視化をわかりやすく解説

1. はじめに

データの変化を視覚的に伝える方法として、レースチャート(動く棒グラフ) は非常に有効です。例えば、

  • 都道府県別の人口推移
  • 企業の売上ランキングの推移
  • スポーツチームの成績変動

など、時系列データをアニメーションで見せることで、視覚的にわかりやすくなります。

Pythonのbar_chart_raceライブラリを使うと、簡単にこのような動くグラフを作成できます。本記事では、初心者でも簡単に試せる方法を詳しく解説していきます。

2. bar_chart_raceとは?

bar_chart_raceは、Pandasのデータフレームを基にアニメーションを生成するライブラリです。通常のmatplotlibseabornでは静止グラフしか作れませんが、bar_chart_raceを使うと、データの推移を動的に表現できます。

なぜbar_chart_raceを使うのか?

  • データの動きを直感的に理解できる
  • 簡単なコードでアニメーションを作成できる
  • 動画ファイル(MP4、GIF)として保存できる

それでは、実際に試してみましょう。

3. bar_chart_raceのインストール

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

pip install bar_chart_race pandas matplotlib

4. 動くグラフを作ってみよう

4.1 データの準備

まずは、サンプルデータを作成します。

import pandas as pd
import numpy as np

# サンプルデータの作成
np.random.seed(42)
dates = pd.date_range("2020-01-01", periods=10, freq="Y")
categories = ["A社", "B社", "C社", "D社", "E社"]

data = pd.DataFrame(
    np.random.randint(100, 1000, size=(10, len(categories))),
    index=dates,
    columns=categories,
)
print(data)
             A社   B社   C社   D社   E社
2020-12-31  202  535  960  370  206
2021-12-31  171  800  120  714  221
2022-12-31  566  314  430  558  187
2023-12-31  472  199  971  763  230
2024-12-31  761  408  869  443  591
2025-12-31  513  905  485  291  376
2026-12-31  260  559  413  121  352
2027-12-31  847  956  660  574  158
2028-12-31  610  781  575  799  882
2029-12-31  289  786  662  975  666

このデータは、企業A社〜E社の売上推移(年ごと)を模したものです。

4.2 bar_chart_raceを使ってアニメーション作成

次に、bar_chart_raceを使ってレースチャートを作成します。

import bar_chart_race as bcr

bcr.bar_chart_race(
    df=data,
    filename="race_chart.mp4",  # 出力ファイル名
    title="企業売上ランキング(サンプルデータ)",
    period_label={'x': 0.95, 'y': 0.15},  # 年の表示位置
    figsize=(6, 3.5),
    dpi=144
)

このコードを実行すると、race_chart.mp4という動画ファイルが生成されます

5. パラメータの解説

作成したグラフをカスタマイズするために、以下のパラメータを調整できます。

パラメータ説明
filename出力する動画のファイル名(MP4やGIFも可)
titleグラフのタイトル
period_label日付(年)のラベル位置(x, y)
figsizeグラフのサイズ(横, 縦)
dpi解像度(数値を大きくすると高品質)

例えば、GIFとして保存する場合は、

bcr.bar_chart_race(
    df=data,
    filename="race_chart.gif",  # GIFで保存
    title="企業売上ランキング(サンプルデータ)"
)

とすればOKです。

6. 応用編

6.1 APIでデータを取得しリアルタイム可視化

例えば、株価データや天気データをリアルタイムに取得し、レースチャートで可視化することも可能です。

6.2 見やすくするためのカスタマイズ

  • カラーパレットを変更する
  • フォントを日本語対応にする
  • ラベルのフォーマットを変更する
bcr.bar_chart_race(
    df=data,
    filename="custom_chart.mp4",
    title="企業売上ランキング(カスタマイズ版)",
    period_label={'x': 0.9, 'y': 0.2},
    figsize=(8, 5),
    dpi=200,
    bar_kwargs={'alpha': 0.7, 'edgecolor': 'black'}
)

7. まとめ

  • bar_chart_raceを使えば、簡単に動く棒グラフ(レースチャート)が作れる
  • データの変化を直感的に伝えるのに便利
  • MP4やGIFで保存でき、プレゼン資料やSNSにも活用可能

ぜひ、自分のデータで試してみてください!