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
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
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
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
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
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
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' }