Files
2020-11-26 17:16:19 +08:00

87 lines
4.0 KiB
Python

from app import *
def plot(df, log=True):
total=df.loc[:, ['Date', 'Total active case', 'Total recovered', 'Total death', 'Total case']]
total=pd.melt(total, 'Date')
fig_total=px.line(total, x='Date', y='value', color='variable', log_y=log)
fig_total.add_trace(go.Scatter(
x=df['Date'], y=df['New active case'],
mode='markers', name='New active case'))
fig_total.add_trace(go.Scatter(
x=df['Date'], y=df['New recovered'],
mode='lines+markers', name='New recovered'))
fig_total.add_trace(go.Scatter(
x=df['Date'], y=df['New death'],
mode='markers', name='New death'))
fig_total.add_trace(go.Scatter(
x=df['Date'], y=df['New case'],
mode='lines+markers', name='New case'))
update_theme(fig_total)
percentage=df.loc[:, ['Date', 'Active case percentage', 'Recovery percentage', 'Death percentage', 'Active case increase rate', 'Recovery increase rate', 'Death increase rate', 'New case increase rate']]
percentage=pd.melt(percentage, 'Date')
fig_percentage=px.line(percentage, x='Date', y='value', color='variable', log_y=log)
update_theme(fig_percentage)
fig_percentage.update_yaxes(tickformat='.2%')
r0=df.loc[:, ['Date', 'R0', 'R0 in 3 days', 'R0 in 7 days']]
r0=pd.melt(r0, 'Date')
fig_r0=px.line(r0, x='Date', y='value', color='variable', log_y=log)
update_theme(fig_r0)
return(fig_total, fig_percentage, fig_r0)
# layout
layout = html.Div([
dbc.Row([
dbc.Col([
html.H2('Covid-19 Analysis (Malaysia)'),
dbc.Tabs([
dbc.Tab(dcc.Graph(id='output-malaysia_total'), label="Value"),
dbc.Tab(dcc.Graph(id='output-malaysia_total_log'), label="Log"),
]),
dbc.Tabs([
dbc.Tab(dcc.Graph(id='output-malaysia_percentage'), label="Value"),
dbc.Tab(dcc.Graph(id='output-malaysia_percentage_log'), label="Log"),
]),
dcc.Graph(id='output-malaysia_r0')
]),
dbc.Col([
html.H2('Covid-19 Analysis (Worldwide)'),
dbc.Tabs([
dbc.Tab(dcc.Graph(id='output-world_wide_total'), label="Value"),
dbc.Tab(dcc.Graph(id='output-world_wide_total_log'), label="Log"),
]),
dbc.Tabs([
dbc.Tab(dcc.Graph(id='output-world_wide_percentage'), label="Value"),
dbc.Tab(dcc.Graph(id='output-world_wide_percentage_log'), label="Log"),
]),
dcc.Graph(id='output-world_wide_r0')
])
])
])
@app.callback(
[Output('output-malaysia_total', 'figure'),
Output('output-malaysia_total_log', 'figure'),
Output('output-malaysia_percentage', 'figure'),
Output('output-malaysia_percentage_log', 'figure'),
Output('output-malaysia_r0', 'figure'),
Output('output-world_wide_total', 'figure'),
Output('output-world_wide_total_log', 'figure'),
Output('output-world_wide_percentage', 'figure'),
Output('output-world_wide_percentage_log', 'figure'),
Output('output-world_wide_r0', 'figure')],
Input('data', 'data'))
def display_page(data):
malaysia = pd.read_json(data['covid_malaysia'])
world_wide = pd.read_json(data['covid_world_wide'])
fig_malaysia_total, fig_malaysia_percentage, fig_malaysia_r0=plot(malaysia, log=False)
fig_malaysia_total_log, fig_malaysia_percentage_log, fig_malaysia_r0_log=plot(malaysia, log=True)
fig_world_wide_total, fig_world_wide_percentage, fig_world_wide_r0=plot(world_wide, log=False)
fig_world_wide_total_log, fig_world_wide_percentage_log, fig_world_wide_r0_log=plot(world_wide, log=True)
return(fig_malaysia_total, fig_malaysia_total_log, fig_malaysia_percentage, fig_malaysia_percentage_log, fig_malaysia_r0, fig_world_wide_total, fig_world_wide_total_log, fig_world_wide_percentage, fig_world_wide_percentage_log, fig_world_wide_r0)