Update app.py
Browse files
app.py
CHANGED
|
@@ -5,11 +5,11 @@ import vega_datasets
|
|
| 5 |
|
| 6 |
import pandas as pd
|
| 7 |
import altair as alt
|
| 8 |
-
import numpy as np
|
| 9 |
-
import pprint
|
| 10 |
import datetime as dt
|
| 11 |
from vega_datasets import data
|
| 12 |
-
import matplotlib.pyplot as plt
|
| 13 |
|
| 14 |
|
| 15 |
df2=pd.read_csv("https://raw.githubusercontent.com/dallascard/SI649_public/main/altair_hw3/approval_topline.csv")
|
|
@@ -17,7 +17,6 @@ df2=pd.read_csv("https://raw.githubusercontent.com/dallascard/SI649_public/main/
|
|
| 17 |
df2['timestamp']=pd.to_datetime(df2['timestamp'])
|
| 18 |
df2=pd.melt(df2, id_vars=['president', 'subgroup', 'timestamp'], value_vars=['approve','disapprove']).rename(columns={'variable':'choice', 'value':'rate'})
|
| 19 |
|
| 20 |
-
df2_approve = df2[df2['choice'] == 'approve']
|
| 21 |
|
| 22 |
# Enable Panel extensions
|
| 23 |
# pn.extension()
|
|
@@ -33,9 +32,10 @@ template = pn.template.BootstrapTemplate(
|
|
| 33 |
def create_plot(subgroup, date_range, moving_av_window):
|
| 34 |
|
| 35 |
# Apply any required transformations to the data in pandas)
|
|
|
|
| 36 |
filtered_df = df2_approve[df2_approve['subgroup'] == subgroup]
|
| 37 |
filtered_df = filtered_df[(filtered_df['timestamp'].dt.date >= date_range[0]) & (filtered_df['timestamp'].dt.date <= date_range[1])]
|
| 38 |
-
filtered_df['mov_avg'] = filtered_df['rate'].rolling(window=moving_av_window).mean().shift(moving_av_window//2)
|
| 39 |
|
| 40 |
# Line chart
|
| 41 |
line_chart = alt.Chart(filtered_df).mark_line(color='red', size=2).encode(
|
|
@@ -53,7 +53,7 @@ def create_plot(subgroup, date_range, moving_av_window):
|
|
| 53 |
plot = scatter_plot + line_chart
|
| 54 |
|
| 55 |
# Return the combined chart
|
| 56 |
-
return plot
|
| 57 |
|
| 58 |
|
| 59 |
# # Create the selection widget
|
|
@@ -63,8 +63,8 @@ select = pn.widgets.Select(name='Select', options=['All polls', 'Adults', 'Voter
|
|
| 63 |
# # Create the slider for the date range
|
| 64 |
date_range_slider = pn.widgets.DateRangeSlider(
|
| 65 |
name='Date Range Slider',
|
| 66 |
-
start=
|
| 67 |
-
value=(
|
| 68 |
step=1
|
| 69 |
)
|
| 70 |
|
|
|
|
| 5 |
|
| 6 |
import pandas as pd
|
| 7 |
import altair as alt
|
| 8 |
+
# import numpy as np
|
| 9 |
+
# import pprint
|
| 10 |
import datetime as dt
|
| 11 |
from vega_datasets import data
|
| 12 |
+
# import matplotlib.pyplot as plt
|
| 13 |
|
| 14 |
|
| 15 |
df2=pd.read_csv("https://raw.githubusercontent.com/dallascard/SI649_public/main/altair_hw3/approval_topline.csv")
|
|
|
|
| 17 |
df2['timestamp']=pd.to_datetime(df2['timestamp'])
|
| 18 |
df2=pd.melt(df2, id_vars=['president', 'subgroup', 'timestamp'], value_vars=['approve','disapprove']).rename(columns={'variable':'choice', 'value':'rate'})
|
| 19 |
|
|
|
|
| 20 |
|
| 21 |
# Enable Panel extensions
|
| 22 |
# pn.extension()
|
|
|
|
| 32 |
def create_plot(subgroup, date_range, moving_av_window):
|
| 33 |
|
| 34 |
# Apply any required transformations to the data in pandas)
|
| 35 |
+
df2_approve = df2[df2['choice'] == 'approve']
|
| 36 |
filtered_df = df2_approve[df2_approve['subgroup'] == subgroup]
|
| 37 |
filtered_df = filtered_df[(filtered_df['timestamp'].dt.date >= date_range[0]) & (filtered_df['timestamp'].dt.date <= date_range[1])]
|
| 38 |
+
filtered_df['mov_avg'] = filtered_df['rate'].rolling(window=moving_av_window).mean().shift(-moving_av_window//2)
|
| 39 |
|
| 40 |
# Line chart
|
| 41 |
line_chart = alt.Chart(filtered_df).mark_line(color='red', size=2).encode(
|
|
|
|
| 53 |
plot = scatter_plot + line_chart
|
| 54 |
|
| 55 |
# Return the combined chart
|
| 56 |
+
return pn.pane.Vega(plot)
|
| 57 |
|
| 58 |
|
| 59 |
# # Create the selection widget
|
|
|
|
| 63 |
# # Create the slider for the date range
|
| 64 |
date_range_slider = pn.widgets.DateRangeSlider(
|
| 65 |
name='Date Range Slider',
|
| 66 |
+
start=df2['timestamp'].dt.date.min(), end=df2['timestamp'].dt.date.max(),
|
| 67 |
+
value=(df2['timestamp'].dt.date.min(), df2['timestamp'].dt.date.max()),
|
| 68 |
step=1
|
| 69 |
)
|
| 70 |
|