Я использую Bokeh с Python для создания вывода из моего кадра данных Pandas.Я могу передать фигуре поля, которые я хочу отобразить;но если я хочу отобразить различные поля в кадре данных, мне нужно изменить код и затем снова запустить функцию.
Вот как я отображаю график (для простоты я не добавляю кадр данных;который содержит много полей)
x_field = pd.data['names'].tolist()
y_field = pd.data['age'].tolist()
p=figure(plot_width=800, ploth_height=600, title="test", x_axis_label="names", y_axis_label="age", x_range=x_field)
p.xaxis.major_label_orientation = 0.78
p.vbar(top=y_field, x=x_field, width=0.5)
show(p)
Я обнаружил, что у Bokeh есть виджеты;Таким образом, я смог создать группу переключателей и добавить ее в макет
radio_group = RadioButtonGroup(labels=["test1", "test2"], active=0)
layout = row(widgetbox(radio_group), p)
show(layout)
Это показывает виджет, но я не имею к нему никакого отношения.Как вы подключаете виджет, чтобы он получал события, когда я нажимаю кнопки?
Я нашел в руководстве ссылку на функцию update
, но она никогда не вызывается.Также я не вижу, как вы «освежаете» фигуру;сейчас смотрю на примеры, и это не для меня сразу.
РЕДАКТИРОВАТЬ --------------------------
Я узнал, что вам нужно использовать сервер Bokeh, чтобы иметь интерактивные графики;другая альтернатива - использовать CustomJS
для вызова JS-кода внутри вашей функции Python;хотя рисунок, кажется, не обновляется, даже если код выполняется правильно.
Не уверен, что это проблема с Bokeh или чем-то еще, но я все еще ищу источник проблемы.