Значение слайдера не обновляется Bokeh Python - PullRequest
0 голосов
/ 17 марта 2020

У меня проблемы с созданием интерактивного сюжета в Jupyter Notebook с использованием Bokeh. Я хочу построить карту мира и отобразить развитие некоторых данных с течением времени. Мне удалось создать график и использовать ползунок для настройки года, но при изменении ползунка значение ползунка не будет обновляться. Код для ползунка ниже:

#creating the data source as a dict
source = ColumnDataSource({
    'x': p_df['x'], 
    'y': p_df['y'], 
    'Country': p_df['Country'], 
    'nkill': p_df['nkill']
})

#making a slider and assign the update_plot function to changes
slider = Slider(start=start_yr, end=end_yr, step=1, value=start_yr, title='Year')
slider.on_change('value',update_plot)

#the update_plot function which needs to run based on the new slider.value
def update_plot(attr, old, new):
    #Update glyph locations
    yr = slider.value
    Amountkills_dt_year = p_df[p_df['Year'] ==yr]
    new_data = {
        'x': Amountkills_dt_year['x'], 
        'y': Amountkills_dt_year['y'], 
        'Country': Amountkills_dt_year['Country'], 
        'nkill': Amountkills_dt_year['nkill']
    }
    source.data = new_data
    #Update colors
    color_mapper = LinearColorMapper(palette='Viridis256',
                                 low = min(Amount_of_Terrorist_Attacks['nkill']),
                                 high = max(Amount_of_Terrorist_Attacks['nkill']))

Где я хочу обновить график с помощью функции update_plot (). Я пробовал решение в Python слайдере bokeh, не обновляя сюжет , но я все еще допускал ту же ошибку.

1 Ответ

0 голосов
/ 17 марта 2020

Виджеты Bokeh, такие как слайдеры, не работают в ноутбуках Jupyter (по крайней мере, без использования некоторых javascript). Как сказано в документации :

To use widgets, you must add them to your document and define their functionality. Widgets can be added directly to the document root or nested inside a layout. There are two ways to program a widget’s functionality:

        Use the CustomJS callback (see JavaScript Callbacks). This will work in standalone HTML documents.

        Use bokeh serve to start the Bokeh server and set up event handlers with .on_change (or for some widgets, .on_click).

Как подсказывает @bigreddot, вам нужно будет использовать сервер Bokeh или, возможно, некоторые из функций в обсуждении обсуждаемых Jupyter-интеракторов здесь .

...