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 |
|