インタラクティブ可視化事例

[1]:
import os

import pandas as pd

import plotly.express as px
import plotly.graph_objects as go
from plotly.subplots import make_subplots
[2]:
df = pd.read_pickle("https://github.com/plotly-dash-book/events/raw/plotly/20210112/plotly/data.pickle")
df.iloc[[0]].T
[2]:
通し 1
厚労省NO 1
無症状病原体保有者 NaN
国内 A-1
チャーター便 NaN
年代 30
性別 男性
確定日 2020-01-15 00:00:00
発症日 2020-01-03 00:00:00
受診都道府県 神奈川県
居住都道府県 神奈川県
居住管内 NaN
居住市区町村 NaN
キー 神奈川県
発表 神奈川県
都道府県内症例番号 1
市町村内症例番号 NaN
ステータス 退院
備考 NaN
ソース https://www.mhlw.go.jp/stf/newpage_08906.html
ソース2 https://www.pref.kanagawa.jp/docs/ga4/bukanshi...
ソース3 NaN
人数 1
累計 1.000000
前日比 1.000000
発症数 0.000000
死者合計 NaN
退院数累計 1.000000
退院数 1.000000
PCR検査実施人数 NaN
PCR検査前日比 NaN
職業_正誤確認用 NaN
勤務先_正誤確認用 NaN
Hospital Pref Kanagawa
Residential Pref Kanagawa
Release Kanagawa Prefecture
Gender Male
X 139.642347
Y 35.447504
確定日YYYYMMDD 2020/1/15
受診都道府県コード 14.000000
居住都道府県コード 14.000000
更新日時 12/25/2020 12:04

感染者の位置情報

[3]:
after_oct_df = df.loc[df["確定日"] > "2020-10-01"]

px.set_mapbox_access_token(os.environ["MAPBOX_TOKEN"])
px.scatter_mapbox(
    after_oct_df,
    lat="Y",
    lon="X",
    size="人数",
    size_max=10,
    color="年代",
    hover_data=["性別", "発症日", "受診都道府県", "居住都道府県"],
    animation_frame=after_oct_df["確定日"].map(lambda x: f"{x:%m/%d}"),
    zoom=4,
    center={"lat": 36, "lon": 138},
    title="感染者の居住地",
    width=1000,
    height=800,
)