Bokeh - использовать виджеты во время выполнения для изменения данных, отображаемых на рисунке - PullRequest
0 голосов
/ 01 декабря 2018

Я использую 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 или чем-то еще, но я все еще ищу источник проблемы.

1 Ответ

0 голосов
/ 03 декабря 2018

Виджеты могут вызывать функции обновления только при использовании на сервере Bokeh.Их можно использовать только для вызова CustomJS обратных вызовов, когда вы не используете сервер Bokeh.

На на этой странице вы можете найти пример функции обновления, котораявызывается, когда пользователь нажимает кнопку и получает дополнительную информацию о серверах Bokeh.

...