JanhaviZarapkar commited on
Commit
659c78a
·
verified ·
1 Parent(s): 8cf6d52

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -12
app.py CHANGED
@@ -3,7 +3,6 @@ import folium
3
  from folium.plugins import MarkerCluster, HeatMap
4
  import pandas as pd
5
  import plotly.express as px
6
- from plotly.subplots import make_subplots
7
 
8
  # Function to create the map
9
  @st.cache_data
@@ -45,15 +44,20 @@ def create_map(df, selected_year, selected_severity=None):
45
  return m
46
 
47
  # Function to create a bar chart based on accident severity
48
- def create_bar_chart(df, selected_year, selected_severity=None):
49
  filtered_df = df[df['Year'] == selected_year]
50
- if selected_severity:
51
- filtered_df = filtered_df[filtered_df['Injuryseverity'] == selected_severity]
52
-
53
  severity_count = filtered_df['Injuryseverity'].value_counts().reset_index()
54
  severity_count.columns = ['Injuryseverity', 'Count']
55
 
56
- fig = px.bar(severity_count, x='Injuryseverity', y='Count', title="Accidents by Severity")
 
 
 
 
 
 
 
 
57
  return fig
58
 
59
  # Streamlit app
@@ -64,17 +68,29 @@ def app():
64
  # Sidebar for selection
65
  st.sidebar.header("Select Filters")
66
  selected_year = st.sidebar.selectbox("Select Year", df['Year'].unique())
67
- selected_severity = st.sidebar.selectbox("Select Severity", df['Injuryseverity'].unique())
68
-
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  # Map visualization
70
  st.subheader("Accidents Map")
 
71
  map_obj = create_map(df, selected_year, selected_severity)
72
  st.components.v1.html(map_obj._repr_html_(), height=600)
73
 
74
- # Bar Chart visualization
75
- st.subheader("Accidents by Severity")
76
- bar_chart = create_bar_chart(df, selected_year, selected_severity)
77
- st.plotly_chart(bar_chart)
78
 
79
  # Run the Streamlit app
80
  if __name__ == "__main__":
 
3
  from folium.plugins import MarkerCluster, HeatMap
4
  import pandas as pd
5
  import plotly.express as px
 
6
 
7
  # Function to create the map
8
  @st.cache_data
 
44
  return m
45
 
46
  # Function to create a bar chart based on accident severity
47
+ def create_bar_chart(df, selected_year):
48
  filtered_df = df[df['Year'] == selected_year]
 
 
 
49
  severity_count = filtered_df['Injuryseverity'].value_counts().reset_index()
50
  severity_count.columns = ['Injuryseverity', 'Count']
51
 
52
+ fig = px.bar(
53
+ severity_count,
54
+ x='Injuryseverity',
55
+ y='Count',
56
+ title="Accidents by Severity",
57
+ labels={'Injuryseverity': 'Severity', 'Count': 'Number of Accidents'}
58
+ )
59
+ fig.update_traces(marker_color='blue')
60
+ fig.update_layout(clickmode='event+select') # Enable interactivity
61
  return fig
62
 
63
  # Streamlit app
 
68
  # Sidebar for selection
69
  st.sidebar.header("Select Filters")
70
  selected_year = st.sidebar.selectbox("Select Year", df['Year'].unique())
71
+
72
+ # Initialize session state for selected severity
73
+ if "selected_severity" not in st.session_state:
74
+ st.session_state["selected_severity"] = None
75
+
76
+ # Bar Chart visualization
77
+ st.subheader("Accidents by Severity")
78
+ bar_chart = create_bar_chart(df, selected_year)
79
+ selected_points = st.plotly_chart(bar_chart)
80
+
81
+ # Update severity based on bar chart selection
82
+ if selected_points:
83
+ selected_data = selected_points['points'][0]['x'] # Get the clicked bar's x value
84
+ st.session_state["selected_severity"] = selected_data
85
+
86
  # Map visualization
87
  st.subheader("Accidents Map")
88
+ selected_severity = st.session_state["selected_severity"]
89
  map_obj = create_map(df, selected_year, selected_severity)
90
  st.components.v1.html(map_obj._repr_html_(), height=600)
91
 
92
+ # Display current filter
93
+ st.sidebar.write(f"Selected Severity: {selected_severity if selected_severity else 'All'}")
 
 
94
 
95
  # Run the Streamlit app
96
  if __name__ == "__main__":