Как создать элемент обратного вызова, используя два ползунка в боке (Python) - PullRequest
0 голосов
/ 01 октября 2018

Я пытаюсь создать обратный вызов, который включает в себя ползунок "месяц" и "год" в пакетах Python Bokeh.Я хочу, чтобы месяц и год использовались вместе для извлечения конкретной информации из индекса даты и времени моего информационного кадра.В настоящее время ползунки создаются, но не влияют на данные на графике.Пример кода выглядит следующим образом (примите во внимание необходимый импорт):

# Make the ColumnDataSource: source
source = ColumnDataSource(data={
 'x'       : df.loc['2016-10'].app_total,
 'y'       : df.loc['2016-10'].app_approval,
 'vertical' : df.loc['2016-10'].vertical,
 'name' : df.loc['2016-10'].name
 })

# Create the figure: plot
plot = figure(title='Application Acceptance Rate 2016-10', 
     plot_height=400, plot_width=700))

# Add circle glyphs to the plot
plot.circle(x='x', y='y', fill_alpha=.8, source=source)

# Define the callback function: update_plot
def update_plot(attr, old, new):
    # set the `yr` name to `slider.value` and `source.data = new_data`
    month = pd.to_datetime(slider1.value + '-' + slider2.value)
    new_data = {
    'x': df.loc[month].app_total,
    'y': df.loc[month].app_approval,
    'segment': df.loc[month].vertical,
    'name': df.loc[month].name,
    }
    month = pd.to_datetime(slider1.value + '-' + slider2.value)
    source.data = new_data
    # Add title to figure: plot.title.text
    plot.title.text = 'Application Acceptance Rate %Y-%m-%d' % month

# Make slider objects: slider1, slider2
slider1 = Slider(title="Year", start = 2016, end=2018, value= 2016, 
step= 1)
slider2 = Slider(title = 'Month', start = 1, end = 12, value = 10, step 
= 1)

# Attach the callback to the 'value' property of slider
slider1.on_change('value', update_plot)
slider2.on_change('value', update_plot)

# Make a row layout of widgetbox(slider1, slider2) and plot and add it 
to the current document
layout = row(widgetbox(slider1, slider2), plot)
curdoc().add_root(layout)
...