Виджет Bokeh Select не обновляет глиф сюжета - PullRequest
0 голосов
/ 10 января 2020

Я программирую приложение 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
)

Точно так же, как он работал хорошо в рамках одной основной функции для создания графика.

Есть идеи?

С уважением

...