オープンデータを使ってCOVID-19の総感染者数を世界地図にヒートマップで表示させる方法を紹介します。また、日毎にアニメーションさせて推移をわかりやすく表示してみました。
今回は、plotly.expressのchoropleth()
を使用して、世界地図をヒートマップ化します。

使用データ
- 使用するデータは下記です。

- データは下記のオープンデータから取得しています。

United States: Coronavirus Pandemic Country Profile
United States: What has been the impact of the Coronavirus Pandemic (COVID-19)?
Plotly Expressでグラフを描画する
- 下記にはまとめていない、世界地図にヒートマップを作成する方法をご紹介します。
ソースコード(世界地図にヒートマップを表示する)
- ライブラリのインポート
- COVID-19のオープンデータを
pd.read_csv()
で読み込む px.choropleth()
で世界地図ヒートマップを描画する
import pandas as pd import plotly.express as px covid_df = pd.read_csv('./sample_data/owid-covid-data.csv',index_col='date',parse_dates=True) fig = px.choropleth(covid_df, locations="iso_code", color='total_cases', animation_frame=covid_df.index.strftime('%Y/%m/%d'), range_color=[0,1000000]) fig.show()

ソースコード解説
オープンデータから取得したデータをデータフレームとして読み込みます。indexはdate列を使用しました。
covid_df = pd.read_csv('./sample_data/owid-covid-data.csv',index_col='date',parse_dates=True)
データの詳細が気になる方はオープンデータからデータを取得してみていただければと思います。

United States: Coronavirus Pandemic Country Profile
United States: What has been the impact of the Coronavirus Pandemic (COVID-19)?
世界地図ヒートマップの描画にはpx.choropleth()
を使用します。px.choropleth()
の引数は下記のようになっています。
fig = px.choropleth(covid_df, locations="iso_code", color='total_cases', animation_frame=covid_df.index.strftime('%Y/%m/%d'), range_color=[0,1000000])
locations | ‘ISO-3’, ‘USA-states’, ‘country names’に準じた国名コードが記載されている列を指定します。 今回は、オープンデータの’iso_code’を指定します。 |
color | どの列の値で色を変えるか指定します。今回は、オープンデータの’total_cases’の数値で色を変化させています。 |
animation_frame | animationさせる指標となる列を指定します。 今回は、データフレームのindexを指定することで1日毎のデータがアニメーションで見ることができるようになります。 |
range_color | 色の範囲を指定します。今回は、0人-100万人までとしています。 |
plotly.express.choropleth — 5.1.0 documentation
国名コード
国名コードが気になる方は下記を参照してください。
国名コード
おわりに
アニメーション等動きがあるほうがお客さんが納得することが多かったため、こんな手軽にアニメーショングラフを作れるplotly.expressは控えめに言って神だと思いました。
使い勝手としては、ほかの可視化ライブラリと比べると癖があるので慣れるまでは大変かと思いますが…
コメント