lab7 / app.py
jchoo's picture
Update app.py
762c48d verified
raw
history blame
2.32 kB
# Import panel and vega datasets
import panel as pn
import vega_datasets
# Enable Panel extensions
pn.extension()
template = pn.template.BootstrapTemplate(
title='SI649 Lab7',
)
# Define a function to create and return a plot
def create_plot(subgroup):
# def create_plot(subgroup, date_range, moving_av_window):
# Apply any required transformations to the data in pandas)
filtered_df = df2_approve[df2_approve['subgroup'] == subgroup]
# filtered_df = filtered_df[(filtered_df['timestamp'] >= date_range[0]) & (filtered_df['timestamp'] <= date_range[1])]
# filtered_df['Smoothed_Rate'] = filtered_df['rate'].rolling(window=moving_av_window, min_periods=1).mean().shift()
# Line chart
# line_chart = alt.Chart(filtered_df).mark_line(color='red').encode(
# x='timestamp:T',
# y='Smoothed_Rate:Q'
# )
# Scatter plot with individual polls
scatter_plot = alt.Chart(filtered_df).mark_point(color='gray', size=2, opacity=0.7).encode(
x='timestamp:T',
y='rate:Q'
)
# Put them togetehr
plot = scatter_plot
# Return the combined chart
return plot
# date_range = ('2021-04-01', '2023-01-01')
# create_plot('All polls', date_range, 3)
# # Create the selection widget
# subgroup_widget = pn.widgets.Select(options=['All polls', 'Adults', 'Voters'], name='Subgroup')
select = pn.widgets.Select(name='Select', options=['All polls', 'Adults', 'Voters'])
# # Create the slider for the date range
# date_range_slider = pn.widgets.DateRangeSlider(name='Date Range')
# date_range_slider = pn.widgets.DateRangeSlider(
# name='Date Range Slider',
# start=dt.datetime(2017, 1, 1), end=dt.datetime(2019, 1, 1),
# value=(dt.datetime(2017, 1, 1), dt.datetime(2018, 1, 10)),
# step=2
# )
# # Create the slider for the moving average window
# moving_av_slider = pn.widgets.IntSlider(name='Moving Average Window', start=1, end=10, value=3)
# create_plot(subgroup_widget, date_range_slider, moving_av_slider)
# Bind the widgets to the create_plot function
final = pn.bind(create_plot,select)
template.main.append(final)
# # Combine everything in a Panel Column to create an app
# app = pn.Column(subgroup_widget, date_range_slider, moving_av_slider, update_plot)
# # set the app to be servable
# app.servable()