jeonghin commited on
Commit
c12e2e7
·
verified ·
1 Parent(s): 47a82ac

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -9
app.py CHANGED
@@ -101,26 +101,40 @@ moving_avg_slider = pn.widgets.IntSlider(name='Moving Average Window', start=1,
101
  def create_plot(subgroup, date_range, moving_av_window):
102
  start_date, end_date = date_range[0].date(), date_range[1].date() # Convert to date
103
  data = df2[(df2['subgroup'] == subgroup) & (df2['choice'] == "approve") & (df2['timestamp'].dt.date.between(start_date, end_date))]
104
- # filtered_data = df2[(df2['subgroup'] == subgroup) & (df2['timestamp'].dt.date.between(date_range[0], date_range[1]))]
 
 
 
105
  data = data.sort_values('timestamp')
106
  data['moving_avg'] = data['rate'].rolling(window=moving_av_window, min_periods=1).mean()
107
 
108
- chart = alt.Chart(data).mark_line().encode(
109
- x='timestamp:T',
110
- y=alt.Y('moving_avg:Q', scale=alt.Scale(zero=False)),
111
- color='choice:N',
112
- tooltip=['timestamp:T', 'rate:Q', 'moving_avg:Q', 'choice:N']
113
- ).properties(width=600, height=400).interactive()
114
 
115
- return chart
 
 
 
 
 
 
 
 
 
 
 
116
 
117
  # Main layout
118
  main_layout = pn.Column(
119
  "# Polling Data Interactive Visualization",
 
120
  subgroup_select,
121
  date_slider,
122
  moving_avg_slider,
123
- pn.panel(create_plot, reactive=True)
124
  )
125
 
126
  # Create a basic template
 
101
  def create_plot(subgroup, date_range, moving_av_window):
102
  start_date, end_date = date_range[0].date(), date_range[1].date() # Convert to date
103
  data = df2[(df2['subgroup'] == subgroup) & (df2['choice'] == "approve") & (df2['timestamp'].dt.date.between(start_date, end_date))]
104
+
105
+ min_rate = df2['rate'].min()
106
+ max_rate = df2['rate'].max()
107
+
108
  data = data.sort_values('timestamp')
109
  data['moving_avg'] = data['rate'].rolling(window=moving_av_window, min_periods=1).mean()
110
 
111
+ # Line chart for moving average
112
+ line = alt.Chart(data).mark_line(interpolate='natural').encode(
113
+ x=alt.X('timestamp:T', axis=alt.Axis(title='', format='%b %d, %Y')),
114
+ y=alt.Y('moving_avg:Q', axis=alt.Axis(title='approve,mov_avg'), scale=alt.Scale(domain=[min_rate, max_rate])),
115
+ color=alt.value('red')
116
+ )
117
 
118
+ # Scatter plot for individual data points
119
+ points = alt.Chart(data).mark_point().encode(
120
+ x=alt.X('timestamp:T'),
121
+ y=alt.Y('rate:Q', axis=alt.Axis(title='approve,mov_avg'), scale=alt.Scale(domain=[min_rate, max_rate])),
122
+ color=alt.value('gray'),
123
+ tooltip=['timestamp:T', 'rate:Q']
124
+ )
125
+
126
+ # Combine line chart and scatter plot
127
+ plot = alt.layer(points, line).resolve_scale(y='shared')
128
+
129
+ return plot
130
 
131
  # Main layout
132
  main_layout = pn.Column(
133
  "# Polling Data Interactive Visualization",
134
+ pn.panel(create_plot, reactive=True)
135
  subgroup_select,
136
  date_slider,
137
  moving_avg_slider,
 
138
  )
139
 
140
  # Create a basic template