1 回答
TA贡献2080条经验 获得超4个赞
注释在 Bokeh 中不是交互式的
请参阅下面的最小示例
不
但我需要存储在 plot.renders 和 plot.center 中的值才能删除它们并将它们链接到我项目中的不同类。
理想情况下,您的工作流程应该避免动态创建和删除 Bokeh 模型,尤其是低级别的模型,例如字形。如果您需要删除一个字形并添加一个具有新属性的新字形,请考虑只更改旧字形的属性。或者只是清除旧字形的数据以隐藏它。
from bokeh.io import curdoc
from bokeh.layouts import column
from bokeh.models import Button
from bokeh.plotting import figure, ColumnDataSource
line_ds = ColumnDataSource(dict(x=[0, 3, 7],
y=[1, 8, 2]))
multi_line_ds = ColumnDataSource(dict(xs=[[1, 5], [1, 1], [3, 3], [5, 5]],
ys=[[5, 5], [5, 1], [5, 1], [5, 1]]))
p = figure(x_range=(0, 8), y_range=(0, 11), tools='save, reset, tap')
p.line('x', 'y', source=line_ds, selection_color='red')
p.multi_line('xs', 'ys', source=multi_line_ds, color='blue', selection_color='red')
b = Button(label="Delete selected", button_type="success")
def delete_rows(ds, indices):
print(indices)
if indices:
print(ds.data)
ds.data = {k: [v for i, v in enumerate(vs) if i not in set(indices)]
for k, vs in ds.data.items()}
print(ds.data)
def delete_selected():
delete_rows(line_ds, line_ds.selected.line_indices)
delete_rows(multi_line_ds, multi_line_ds.selected.indices)
b.on_click(delete_selected)
curdoc().add_root(column(p, b))
添加回答
举报