Я представляю, что это довольно простая вещь, но я не уверен, как это сделать.У меня есть таблица данных с тремя столбцами.Два представляют собой числовые значения, которые отображаются на графике, а одно - строки.Я хочу, чтобы пользователь мог вводить данные в поле, а соответствующая строка в DataTable и точка на графике должны быть выделены / выделены.
Я думаю, что мне нужно использовать source.selected.indices
или, возможно,CustomJS обратный вызов.
Кто-нибудь может помочь?
from random import randint
from bokeh.io import output_file, show
from bokeh.layouts import gridplot, row
from bokeh.models import ColumnDataSource
from bokeh.models.widgets import DataTable, TableColumn, TextInput
search_words = TextInput(title="Search for country")
data = dict(
x=[randint(0, 100) for i in range(10)],
y=[randint(0, 100) for i in range(10)],
countries = ["France","Spain","Germany","Italy","Portugal","Poland","Russia","Bulgaria","Sweden","Belgium"]
)
source = ColumnDataSource(data)
columns = [
TableColumn(field="x", title="x"),
TableColumn(field="y", title="y"),
TableColumn(field="countries", title="Countries"),
]
TOOLS = "pan,wheel_zoom,box_select,reset"
fig = figure(plot_width=400, plot_height=400, tools=TOOLS)
fig.circle('x', 'y', source=source,size=10,selection_color="red", hover_color="green")
data_table = DataTable(source=source, columns=columns, width=400, height=280)
p = gridplot([fig],[data_table],
toolbar_location = "above")
show(row(p, search_words))