Spaces:
Sleeping
Sleeping
File size: 3,531 Bytes
d1cc84a 471f224 33f164a 6f8fd55 ae3451c d4dc4f4 6f8fd55 eb3d6bf d1cc84a eb3d6bf d1cc84a eb3d6bf d1cc84a 6f8fd55 8297f16 ae3451c d1cc84a 471f224 6f8fd55 ae3451c d1cc84a ae3451c 471f224 ae3451c 8297f16 6f8fd55 ae3451c 6f8fd55 ae3451c 6f8fd55 ae3451c 6f8fd55 ae3451c 6f8fd55 ae3451c 6f8fd55 d1cc84a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
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_df1 = counts_df.copy()
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_df1))
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() |