Я программирую приложение Bokeh и пытаюсь реализовать выбранный виджет. Раньше у меня был весь сюжет с глифом et c. в одной функции и использовал эту функцию в качестве функции обратного вызова для моего виджета выбора, и все работало нормально. Но выступление было довольно плохим. Итак, я попытался сделать график вне функции, а затем функции обратного вызова раздельно. Теперь виджет выбора больше не работает должным образом. Я не получаю никакой ошибки при запуске приложения (я использую метод Bokeh serve --show main.py). Виджет выбора должен изменить значения оси Y и одновременно обновить метку оси Y. Ярлык обновляется, но значения не меняются. Мой код выглядит так:
sel_yaxis = Select(
title='Select Y Axis',
options=sorted(head_columns.keys()),
value='Demonstrative word'
)
def set_axis(attr, old, new):
# Save value for y-axis from select input widget within the "top" variable
# in the glyph. It will automatically update on changing the select widget within the application.
y_axis = head_columns[sel_yaxis.value]
# Set the label on y-axis so that the glyph displayed and y-axis label match
p.yaxis.axis_label = sel_yaxis.value
c.yaxis.axis_label = sel_yaxis.value
sel_yaxis.on_change('value', set_axis)
p = figure(
title='',
plot_width=1000,
plot_height=700,
x_axis_label='ID',
toolbar_location='above',
tools='pan, box_select, save, undo, redo, xwheel_zoom, reset'
)
c = figure(
title='',
plot_width=1000,
plot_height=700,
x_axis_label='ID',
toolbar_location='above',
tools='pan, box_select, save, undo, redo, xwheel_zoom, reset'
)
# Holds the x-axis ID values for the glyph
id = head_columns['id']
p.yaxis.axis_label = sel_yaxis.value
c.yaxis.axis_label = sel_yaxis.value
# Render glyph into plot
p.vbar(
x=id,
top=y_axis,
source=source,
width=0.8,
line_alpha=0.3,
)
c.scatter(
x=id,
y=y_axis,
source=source
)
Точно так же, как он работал хорошо в рамках одной основной функции для создания графика.
Есть идеи?
С уважением