Spaces:
Sleeping
Sleeping
import streamlit as st | |
import pandas as pd | |
import plotly.express as px | |
from datasets import load_dataset | |
import os | |
from src.basic_plot import basic_chart | |
from src.map_viz import calling_map_viz | |
from src.data_ingestion import daily_average | |
from src.heatmap import HeatMap | |
from src.data_ingestion import remove_previous_view, merge_volumes | |
def fetch_data(): | |
# comment out for local testing, but be sure to include after testing | |
dataset = load_dataset("tappyness1/causion", use_auth_token=os.environ['TOKEN']) | |
# print (dataset) | |
# print (pd.DataFrame(dataset['train'])) | |
counts_df = pd.DataFrame(dataset['train']) | |
# only use this part before for local testing | |
# once local testing is completed, comment out and use the dataset above | |
# counts_df = pd.read_csv("data/counts_dataset.csv") | |
return counts_df | |
def main(): | |
counts_df = fetch_data() | |
counts_df = remove_previous_view(counts_df) | |
counts_df = merge_volumes(counts_df) | |
# st.set_page_config(layout="wide") | |
height = 650 | |
st.markdown(""" <style> | |
#MainMenu {visibility: hidden;} | |
footer {visibility: hidden;} | |
</style> """, | |
unsafe_allow_html=True | |
) | |
# Select Plot Option | |
st.sidebar.markdown("Select Plots to show") | |
checkbox_one = st.sidebar.checkbox('Overall Traffic', value = True) # rename as necessary | |
checkbox_two = st.sidebar.checkbox('Traffic Map', value = True) | |
checkbox_three = st.sidebar.checkbox('Heat Map', value = True) | |
view_options = list(counts_df["view"].unique()) | |
view_options.append('All') | |
view = st.sidebar.selectbox("Choose View", options=view_options, index = view_options.index("Woodlands - to Johor")) | |
if view != 'All': | |
st.header(f"Showing Traffic for {view}") | |
counts_df = counts_df[counts_df['view'] == view] | |
if checkbox_one: | |
st.subheader("Overall Traffic") | |
plot = st.selectbox("Choose Plot", options=["Day", "Hour", "Raw"], index = 0) | |
st.plotly_chart(basic_chart(counts_df, plot = plot),use_container_width=True) | |
if checkbox_two: | |
st.subheader("Traffic Map") | |
st.pyplot(calling_map_viz(counts_df)) | |
if checkbox_three: | |
heatmap = HeatMap(counts_df) | |
# st.header("Mean Vehicle Count by Day of Week") | |
# st.plotly_chart(heatmap.vehicle_count_bar()) | |
st.subheader("Heatmap") | |
st.plotly_chart(heatmap.heatmap()) | |
hours = [ | |
"00:00", "01:00", "02:00", "03:00", "04:00", "05:00", | |
"06:00", "07:00", "08:00", "09:00", "10:00", "11:00", | |
"12:00", "13:00", "14:00", "15:00", "16:00", "17:00", | |
"18:00", "19:00", "20:00", "21:00", "22:00", "23:00", | |
] | |
hour_choice = st.selectbox( | |
"Choose Hour", | |
options= hours, | |
key = "hour", index = hours.index("08:00") | |
) | |
st.subheader(f"Traffic Volume of Each Day at {hour_choice}") | |
st.plotly_chart(heatmap.update_hour_bar_chart(hour_choice)) | |
days = ["Monday", "Tuesday", "Wednesday", | |
"Thursday", "Friday","Saturday", "Sunday"] | |
day_choice = st.selectbox("Choose Day of the Week", options = days, key = "day", index = days.index("Saturday")) | |
st.subheader(f"Traffic Volume of Each Hour on {day_choice}") | |
st.plotly_chart(heatmap.update_day_bar_chart(day_choice)) | |
if __name__ == "__main__": | |
main() |