LoginSignup
41
33

More than 3 years have passed since last update.

pythonでbar chart race

Last updated at Posted at 2020-11-20

pythonでbar chart race

out.gif
Youtubeなどでよく見かける棒グラフレースはflourishで作成されることが多いようですが、pythonで作成するライブラリがあるので紹介します。インストールや使用方法やDependencyなどは以下を参照のこと。
https://www.dexplo.org/bar_chart_race/
使い方は超簡単で、各データ名をコラムに持つ、日付ごとレコードをpandasのDataFrameに格納し、関数を呼び出すだけです。具体的にはこんなデータを用意します。
image.png
これを関数に与えるだけなのですが、GoogleがCovid-19の向こう28日間予測を公表しているのでそれをサンプルデータとして使用してみます。以下サンプルコードです。

import pandas as pd
import bar_chart_race as bcr
df = pd.read_csv('https://storage.googleapis.com/covid-external/forecast_JAPAN_PREFECTURE_28.csv')
df = df.pivot_table(index='target_prediction_date', 
    columns='prefecture_name',
    values='cumulative_confirmed')
bcr.bar_chart_race(df=df, n_bars=10)

Jupyter上で実行し、しばらくするとアニメーションが表示されるはずです。
4行目でピボットしているのは、GoogleのレコードがPrefectureごとにレコードになっているので、ここでは累積陽性者数(cumulative_confirmed)に着目して、県ごとの数字をコラムに配置しています。変換後のDataFrameが上記の画像というわけです。Googleは他にもいろんな予測値を発表しているので、valuesの引数を色々変えて試してみるとよいです。
https://storage.googleapis.com/covid-external/COVID-19ForecastUserGuideJapan_Japanese.pdf

オプションなど

n_bars=10はTop 10を表示するオプションで、省略すると全部棒グラフになります。filenameオプションで、mpeg動画やgifアニメを作成することができますが、別途ffmpegやImageMagickのインストールが必要です。その他グラフを縦にしたりタイトルを入れるオプションなど、上記の作者さんのサイトにものすごく詳しく書いてあるので見たほうが早いです。

参考にした記事

FFmpegで動画をGIFに変換(トップの圧縮GIF画像を作成するのに)
Pythonで二次元ランダムウォーク+matplotlib.animationのgif保存(ImageMagickのインストール)
Create a Bar Chart Race Animation in Python with Matplotlib

41
33
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
33