import streamlit as st import pandas as pd import numpy as np import yfinance as yf import altair as alt import plotly.figure_factory as ff import pydeck as pdk from vega_datasets import data as vds import plotly.express as px import plotly.graph_objects as go from plotly.subplots import make_subplots from streamlit_image_comparison import image_comparison def on_input_change(): user_input = st.session_state.user_input st.session_state.past.append(user_input) st.session_state.generated.append( {"data": "The messages from Bot\nWith new line", "type": "normal"} ) def on_btn_click(): del st.session_state.past[:] del st.session_state.generated[:] def main(): st.title(" Corona Dashboard") ( col1, col2, ) = st.columns(2) with col1: option = st.selectbox(" San Francisco", [" San Francisco"]) with col2: option = st.selectbox(" Monthly / Weekly", [" Monthly ", " Weekly"]) if st.checkbox(" Show raw data"): st.write("Checkbox checked!") if st.button(" Visualize"): st.write("Button clicked!") st.subheader(" Global Data") df = pd.read_csv( "https://raw.githubusercontent.com/plotly/datasets/master/volcano_db.csv", encoding="iso-8859-1", ) freq = df freq = freq.Country.value_counts().reset_index().rename(columns={"count": "x"}) df_v = pd.read_csv( "https://raw.githubusercontent.com/plotly/datasets/master/volcano.csv" ) fig = make_subplots( rows=2, cols=2, column_widths=[0.6, 0.4], row_heights=[0.4, 0.6], specs=[ [{"type": "scattergeo", "rowspan": 2}, {"type": "bar"}], [None, {"type": "surface"}], ], ) fig.add_trace( go.Scattergeo( lat=df["Latitude"], lon=df["Longitude"], mode="markers", hoverinfo="text", showlegend=False, marker=dict(color="crimson", size=4, opacity=0.8), ), row=1, col=1, ) fig.add_trace( go.Bar( x=freq["x"][0:10], y=freq["Country"][0:10], marker=dict(color="crimson"), showlegend=False, ), row=1, col=2, ) fig.add_trace(go.Surface(z=df_v.values.tolist(), showscale=False), row=2, col=2) fig.update_geos( projection_type="orthographic", landcolor="white", oceancolor="MidnightBlue", showocean=True, lakecolor="LightBlue", ) fig.update_xaxes(tickangle=45) fig.update_layout( template="plotly_dark", margin=dict(r=10, t=25, b=40, l=60), annotations=[ dict( text="Source: NOAA", showarrow=False, xref="paper", yref="paper", x=0, y=0, ) ], ) st.plotly_chart(fig) ( col1, col2, ) = st.columns(2) with col1: st.table( { "Country": ["USA", "Canada", "UK", "Australia"], "Population (millions)": [331, 38, 66, 25], "GDP (trillion USD)": [22.675, 1.843, 2.855, 1.488], } ) with col2: df = px.data.gapminder().query("year == 2007").query("continent == 'Americas'") fig = px.pie( df, values="pop", names="country", title="Population of American continent", hover_data=["lifeExp"], labels={"lifeExp": "life expectancy"}, ) fig.update_traces(textposition="inside", textinfo="percent+label") st.plotly_chart(fig) if __name__ == "__main__": main()