示例#1
0
def initial_pie():
    ts_confirmed, ts_death, ts_recovered = get_data_from_postgres()
        
    filtered_ts_confirmed = ts_confirmed.iloc[:,-2]
    filtered_ts_death = ts_death.iloc[:,-2]
    filtered_ts_recovered = ts_recovered.iloc[:,-2]
    
    active = filtered_ts_confirmed.sum() - filtered_ts_death.sum() - filtered_ts_recovered.sum()
    
    labels = ['Recovered','Deaths','Active']
    values = [filtered_ts_recovered.sum(),filtered_ts_death.sum(),active]

    colors = ['#5cb85c', '#d9534f', '#f0ad4e']

    fig = go.Figure(data=[go.Pie(labels=labels, values=values, hole=.3, titlefont=dict(color='white', size=20) )])
    
    fig.update_traces(hoverinfo='label+percent+value', textinfo='none', textfont_size=20,
                  marker=dict(colors=colors))
    
    fig.update_layout(
        paper_bgcolor='rgba(0,0,0,0)',
        plot_bgcolor='rgba(0,0,0,0)',
        legend = dict(font = dict(color='white')),
                               transition={
                            'duration': 500,
                            'easing': 'cubic-in-out',}
        )
    
    return fig
示例#2
0
def update_pie(unix_date, selected_nation):
    
    
    ts_confirmed, ts_death, ts_recovered = get_data_from_postgres()
    
    # ts_recovered = pd.read_csv('recovered.csv')
    # ts_death = pd.read_csv('deaths.csv')
    # ts_confirmed = pd.read_csv('confirmed.csv')

    #unix_date=1585440000
    
    date = unix_to_date(unix_date)
    
    ## Country Dropdown
    if 'Worldwide' in selected_nation or not selected_nation: 
        #filtered_df = df
        filtered_ts_confirmed = ts_confirmed
        filtered_ts_death = ts_death
        filtered_ts_recovered = ts_recovered
    else:
        #filtered_df = df[df['Country/Region'].isin(selected_nation)] 
        filtered_ts_confirmed = ts_confirmed[ts_confirmed['Country/Region'].isin(selected_nation)]
        filtered_ts_death = ts_death[ts_death['Country/Region'].isin(selected_nation)]
        filtered_ts_recovered = ts_recovered[ts_recovered['Country/Region'].isin(selected_nation)]
    
    active = filtered_ts_confirmed[date].sum() - filtered_ts_death[date].sum() - filtered_ts_recovered[date].sum()
    
    labels = ['Recovered','Deaths','Active']
    values = [filtered_ts_recovered[date].sum(),filtered_ts_death[date].sum(),active]
    
    #df = pd.DataFrame(data)
    
    # ts_recovered[date].sum()
    # ts_death[date].sum()
    # ts_confirmed[date].sum()

    colors = ['#5cb85c', '#d9534f', '#f0ad4e']

    fig = go.Figure(data=[go.Pie(labels=labels, values=values, hole=.3, titlefont=dict(color='white', size=20) )])
    
    fig.update_traces(hoverinfo='label+percent+value', textinfo='none', textfont_size=20,
                  marker=dict(colors=colors))
    
    fig.update_layout(
        paper_bgcolor='rgba(0,0,0,0)',
        plot_bgcolor='rgba(0,0,0,0)',
        legend = dict(font = dict(color='white')),
                               transition={
                            'duration': 500,
                            'easing': 'cubic-in-out',}
        )
    
    
    return fig
示例#3
0
def update_map(selected_nation, selected_case, click, unix_date):
    
    #unix_date=1585008000
    #selected_nation=['Worldwide']
    
    ts_confirmed, ts_death, ts_recovered = get_data_from_postgres()
    
    date = unix_to_date(unix_date)
    #date='3/25/20'
    
    zoom = 3    
    
    ## Country Dropdown
    if 'Worldwide' in selected_nation or not selected_nation: 
        #filtered_df = df
        filtered_ts_confirmed = ts_confirmed
        filtered_ts_death = ts_death
        filtered_ts_recovered = ts_recovered
        zoom = 2
    else:
        #filtered_df = df[df['Country/Region'].isin(selected_nation)] 
        filtered_ts_confirmed = ts_confirmed[ts_confirmed['Country/Region'].isin(selected_nation)]
        filtered_ts_death = ts_death[ts_death['Country/Region'].isin(selected_nation)]
        filtered_ts_recovered = ts_recovered[ts_recovered['Country/Region'].isin(selected_nation)]
    
    ## China Checkbox
    if not click: 
        #filtered_df = filtered_df[filtered_df['Country/Region'] != 'China'] 
        filtered_ts_confirmed = filtered_ts_confirmed[filtered_ts_confirmed['Country/Region'] != 'China']
        filtered_ts_death = filtered_ts_death[filtered_ts_death['Country/Region'] != 'China']
        filtered_ts_recovered = filtered_ts_recovered[filtered_ts_recovered['Country/Region'] != 'China']
    
    px.set_mapbox_access_token(mapbox_access_token)
        
    ## Rename columns to prettify hover data
    temp_deaths_df = filtered_ts_death.rename(columns = {date:'Deaths', 'Lat':'Latitude', 'Long':'Longitude'})
    temp_recovered_df = filtered_ts_recovered.rename(columns = {date:'Recovered', 'Lat':'Latitude', 'Long':'Longitude'})
    temp_confirmed_df = filtered_ts_confirmed.rename(columns = {date:'Confirmed', 'Lat':'Latitude', 'Long':'Longitude'})

    #Some data from JHU appears as -1 unsure why
    temp_recovered_df[temp_recovered_df['Recovered'] < 0] = 0
    temp_confirmed_df[temp_confirmed_df['Confirmed'] < 0] = 0
    temp_deaths_df[temp_deaths_df['Deaths'] < 0] = 0

    #assumes order of countries from datasets are the same
    temp_all = temp_confirmed_df[['City/Country', 'Confirmed','Latitude','Longitude']]
    temp_all.insert(2,'Deaths', temp_deaths_df[['Deaths']])
    temp_all.insert(2,'Recovered',temp_recovered_df[['Recovered']])
    
    if selected_case == 'Deaths':
        fig = px.scatter_mapbox(temp_deaths_df, lat="Latitude", lon="Longitude", size='Deaths', size_max=100, hover_name="City/Country")
        fig.update_traces(hoverinfo='text', marker=dict(sizemin=5, color='Red'))
    elif selected_case == 'Recovered':
        fig = px.scatter_mapbox(temp_recovered_df, lat="Latitude", lon="Longitude", size="Recovered",
                      size_max=100, hover_name="City/Country")
        fig.update_traces(hoverinfo='text', marker=dict(sizemin=5, color='Green'))
    elif selected_case == 'Confirmed':
        fig = px.scatter_mapbox(temp_confirmed_df, lat="Latitude", lon="Longitude", size="Confirmed",
                      size_max=100, hover_name="City/Country")
        fig.update_traces(hoverinfo='text', marker=dict(sizemin=5, color='Blue'))
    else:
        fig = px.scatter_mapbox(temp_all, lat="Latitude", lon="Longitude", color="Deaths", size="Confirmed",
                              #color_continuous_scale=px.colors.diverging.Picnic,
                              size_max=50, hover_name="City/Country",
                              #hover_data=["Confirmed", "Recovered", "Deaths"], 
                              hover_data=["Confirmed", "Deaths"], 
                              )
        fig.update_traces(hoverinfo='text', marker=dict(sizemin=2),showlegend=False)
    
    fig.update(
            layout=dict(title=dict(x=0.5), paper_bgcolor=colors['background'] )
        )
    
    fig.update_layout(
        autosize=True,
        height=750,
        #width=1500,
        font={
            'family': 'Courier New, monospace',
            'size': 18,
            'color': 'white'
        },
        hovermode='closest',
        legend=dict(
            font={'color':colors['background']},
            ),
        mapbox=dict(
            accesstoken=mapbox_access_token,
            bearing=0,
            style="dark",
            # center=dict(
            #     lat=56,
            #     lon=324
            # ),
            pitch=0,
            zoom=zoom
            ),
    )
       
    return fig
示例#4
0
def update_graph(unix_date, selected_nation):    
    
    ts_confirmed, ts_death, ts_recovered = get_data_from_postgres()
    
    #unix_date=1585440000
    
    date = unix_to_date(unix_date)
    
    ## Country Dropdown
    if 'Worldwide' in selected_nation or not selected_nation: 
        #filtered_df = df
        filtered_ts_confirmed = ts_confirmed
        filtered_ts_death = ts_death
        filtered_ts_recovered = ts_recovered
    else:
        #filtered_df = df[df['Country/Region'].isin(selected_nation)] 
        filtered_ts_confirmed = ts_confirmed[ts_confirmed['Country/Region'].isin(selected_nation)]
        filtered_ts_death = ts_death[ts_death['Country/Region'].isin(selected_nation)]
        filtered_ts_recovered = ts_recovered[ts_recovered['Country/Region'].isin(selected_nation)]
      
    listy = []
    
    for a in getTimeScale():
        listy.append(a)
        #print(a +' ? '+ date)
        if a == date:
            #print('-------------------------')
            break
    
    #listy.insert(0,'City/Country')
    #for individual countries    
    # filtered_ts_confirmed = ts_confirmed[listy]
    # filtered_ts_death = ts_death[listy]
    # filtered_ts_recovered = ts_recovered[listy]
    #filtered_ts_df = ts_confirmed[['City/Country','3/3/20']]
    
    ## Total events on a given day
    filtered_ts_confirmed = filtered_ts_confirmed[listy[1:]].sum()
    filtered_ts_death = filtered_ts_death[listy[1:]].sum()
    filtered_ts_recovered = filtered_ts_recovered[listy[1:]].sum()
    
    trace0 = go.Scatter(x=listy[1:], y=filtered_ts_confirmed,
                        mode='lines',
                        name='Confirrmed',
                        line = {'color':'#0275d8'},
                        fill='tozeroy'
                        )
    
    trace1 = go.Scatter(x=listy[1:], y=filtered_ts_death,
                    mode='lines',
                    name='Deaths',
                    line = {'color':'#d9534f'},
                    fill='tozeroy'
                    )

    trace2 = go.Scatter(x=listy[1:], y=filtered_ts_recovered,
                    mode='lines',
                    name='Recovered',
                    line = {'color':'#5cb85c'},
                    fill='tozeroy'
                    )
    
    data = [trace0, trace2, trace1]
    
    # print(selected_nation)
    # title = ' '.join([str(x) for x in selected_nation]) + ' Cases'
    # print(title)
    
    layout = go.Layout(paper_bgcolor='rgba(0,0,0,0)',
                       plot_bgcolor='rgba(0,0,0,0)',
                       font={
                            'family': 'Courier New, monospace',
                            'size': 18,
                            'color': 'white'
                            },
                       #title=title,
                       xaxis={'gridcolor':'rgb(46,47,47)','autorange': True,},
                       yaxis={'gridcolor':'rgb(46,47,47)','autorange': True,'title':'Number of cases'},
                       hovermode='closest',
                       transition={
                            'duration': 500,
                            'easing': 'cubic-in-out',}
                       )
    
    fig = go.Figure(data=data, layout=layout)
    
    fig.update_layout(
        #title=title,
        legend=dict(
            x=0.01,
            y=1,
            traceorder="normal",
            font=dict(
                family="sans-serif",
                size=12,
                color="#f7f7f7"
            ),
            bgcolor="#292b2c",
            bordercolor="#f7f7f7",
            borderwidth=2,
        )
    )

    return fig
示例#5
0
def initial_graph():    
    
    ts_confirmed, ts_death, ts_recovered = get_data_from_postgres()
    
    #Recovery data gets updated late compared to datasets from JHU
    x_axis = ts_recovered.columns[4:-1]
    
    trace0 = go.Scatter(x=x_axis, y=ts_confirmed[x_axis].sum(),
                        mode='lines',
                        name='Confirrmed',
                        line = {'color':'#0275d8'},
                        fill='tozeroy'
                        )
    
    trace1 = go.Scatter(x=x_axis, y=ts_death[x_axis].sum(),
                    mode='lines',
                    name='Deaths',
                    line = {'color':'#d9534f'},
                    fill='tozeroy'
                    )

    trace2 = go.Scatter(x=x_axis, y=ts_recovered[x_axis].sum(),
                    mode='lines',
                    name='Recovered',
                    line = {'color':'#5cb85c'},
                    fill='tozeroy'
                    )
    
    data = [trace0, trace2, trace1]
    
    layout = go.Layout(paper_bgcolor='rgba(0,0,0,0)',
                       plot_bgcolor='rgba(0,0,0,0)',
                       font={
                            'family': 'Courier New, monospace',
                            'size': 18,
                            'color': 'white'
                            },
                       #title=title,
                       xaxis={'gridcolor':'rgb(46,47,47)','autorange': True,},
                       yaxis={'gridcolor':'rgb(46,47,47)','autorange': True,'title':'Number of cases'},
                       hovermode='closest',
                       transition={
                            'duration': 500,
                            'easing': 'cubic-in-out',}
                       )
    
    fig = go.Figure(data=data, layout=layout)
    
    fig.update_layout(
        #title=title,
        legend=dict(
            x=0.01,
            y=1,
            traceorder="normal",
            font=dict(
                family="sans-serif",
                size=12,
                color="#f7f7f7"
            ),
            bgcolor="#292b2c",
            bordercolor="#f7f7f7",
            borderwidth=2,
        )
    )

    return fig
示例#6
0
def initial_map():
    
    ts_confirmed, ts_death, ts_recovered = get_data_from_postgres()
    
    date = ts_recovered.columns[-2]
    
    zoom = 2    
    
    filtered_ts_confirmed = ts_confirmed
    filtered_ts_death = ts_death
    filtered_ts_recovered = ts_recovered
    
    px.set_mapbox_access_token(mapbox_access_token)
        
    ## Rename columns to prettify hover data
    temp_deaths_df = filtered_ts_death.rename(columns = {date:'Deaths', 'Lat':'Latitude', 'Long':'Longitude'})
    temp_recovered_df = filtered_ts_recovered.rename(columns = {date:'Recovered', 'Lat':'Latitude', 'Long':'Longitude'})
    temp_confirmed_df = filtered_ts_confirmed.rename(columns = {date:'Confirmed', 'Lat':'Latitude', 'Long':'Longitude'})

    #Some data from JHU appears as -1 unsure why
    temp_recovered_df[temp_recovered_df['Recovered'] < 0] = 0
    temp_confirmed_df[temp_confirmed_df['Confirmed'] < 0] = 0
    temp_deaths_df[temp_deaths_df['Deaths'] < 0] = 0

    #assumes order of countries from datasets are the same
    temp_all = temp_confirmed_df[['City/Country', 'Confirmed','Latitude','Longitude']]
    temp_all.insert(2,'Deaths', temp_deaths_df[['Deaths']])
    temp_all.insert(2,'Recovered',temp_recovered_df[['Recovered']])
    
    fig = px.scatter_mapbox(temp_all, lat="Latitude", lon="Longitude", color="Deaths", size="Confirmed",
                          #color_continuous_scale=px.colors.diverging.Picnic,
                          size_max=50, hover_name="City/Country",
                          #hover_data=["Confirmed", "Recovered", "Deaths"], 
                          hover_data=["Confirmed", "Deaths"], 
                          )
    fig.update_traces(hoverinfo='text', marker=dict(sizemin=2),showlegend=False)
    
    fig.update(
            layout=dict(title=dict(x=0.5), paper_bgcolor=colors['background'] )
        )
    
    fig.update_layout(
        autosize=True,
        height=750,
        #width=1500,
        font={
            'family': 'Courier New, monospace',
            'size': 18,
            'color': 'white'
        },
        hovermode='closest',
        legend=dict(
            font={'color':colors['background']},
            ),
        mapbox=dict(
            accesstoken=mapbox_access_token,
            bearing=0,
            style="dark",
            # center=dict(
            #     lat=56,
            #     lon=324
            # ),
            pitch=0,
            zoom=zoom
            ),
    )
       
    return fig
示例#7
0
             html.Div(
                 [
                     dcc.Graph(id='time-series', figure=initial_graph()),
                 ]
         ), width=12, lg=9),
          
         ]
     )
 ], style={'padding-bottom':'20px'}),
 #style={'padding-bottom': 40, 'padding-right': 40, 'padding-left': 40,}
 
 ## DROPDOWN ROW
 html.Div([
     dbc.Row(
         [
             dbc.Col([NationsDropdown(get_data_from_postgres()[0])]),
             dbc.Col([CasesDropdown()]),
         ]
     )
 ]),
 
 html.Div([
     daq.ToggleSwitch(
         id='exclude-china',
         value=True,
         label=['Excluding China', 'Including China'],
         color='#0275d8',
         style={
             'color': 'white',
             'width':'350px'
         }