Боке - обновление источника рендерера и DataTable - с помощью Callback? - PullRequest
0 голосов
/ 18 мая 2018

Я недавно начал изучать боке, и совершенно потерял работу обратных вызовов.

Я хотел бы обновить исходный код с помощью PointDrawTool.Он обновляет график и таблицу, но, по-видимому, не обновляет средство визуализации или источник.Это сильно смущает меня, и я буду признателен за помощь.

Я работаю так:

from bokeh.models.glyphs import Circle
from bokeh.plotting import figure, show, output_notebook, Column, Row
from bokeh import events
from bokeh.models import DataTable, TableColumn, PointDrawTool, ColumnDataSource, CustomJS

output_notebook()

p = figure(width = 400, height = 600)

source = ColumnDataSource({
    'x': [38], 'y': [-12], 'color': ['red']
})

renderer = p.circle(x='x', y='y',
                    source=source,
                    color='color',
                    size=10)

columns = [TableColumn(field="x", title="x"),
           TableColumn(field="y", title="y"),
           TableColumn(field='color', title='color')]

table = DataTable(source=source, columns=columns, editable=True, height=200)

draw_tool = PointDrawTool(renderers=[renderer],
                          empty_value='red')

p.add_tools(draw_tool)
p.toolbar.active_tap = draw_tool

show(Row(p,table))

1 Ответ

0 голосов
/ 18 мая 2018

Используя ваш метод рендеринга диаграммы (show), невозможно обновить источник диаграммы (если вы не написали собственный JavaScript-код для этого).Для этого вам необходимо использовать сервер Bokeh, как описано здесь .

По сути, поместите весь свой код в файл с именем 'main.py', а затем сохраните его в папке с именем вашего проекта.Затем в терминале запустите

bokeh serve --show project_name

Я раньше не использовал PointDrawTool, но если это виджет, вам также нужно будет написать функции для программирования обновления исходных данных, используя on_click или on_change описанные методы здесь .

...