【问题标题】:How can I select a bokeh circle glyphs with a python callback?如何使用 python 回调选择散景圆形字形?
【发布时间】:2020-06-06 11:21:25
【问题描述】:

我正在运行一个带有简单圆圈字形的散景服务器和一个用于选择单个圆圈的 TapTool。

现在我想要一个按钮来选择所有字形并更新图中的选择。

这是我的尝试:

from bokeh import plotting as bplt
from bokeh import layouts as blayouts
from bokeh import models as bmodels
from bokeh import io as bio
from bokeh.server.server import Server

fig = bplt.figure(tools="tap")

source = bmodels.ColumnDataSource(dict(x=[0,1], y=[0,1]))

r = fig.circle('x', 'y', source=source, size=10)

def handler(attr, old, new):
    print('attr: {} old: {} new: {}'.format(attr, old, new))

# r.data_source.on_change('selected', handler)
r.data_source.selected.on_change('indices', handler)

button = bmodels.Button(label="select all", button_type="success", width=200)

def callback(event):
    '''Here I would like to select all points in the plot with python code'''

    # this is my atempt:
    print('event: {}'.format(event))
    print('data source selected:', r.data_source.selected.indices)

    r.data_source.selected.indices = [0]

    print('data source selected:', r.data_source.selected.indices)

button.on_click(callback)

def modify(doc):
    layout = blayouts.row(fig, button)
    doc.add_root(layout)
    doc.title = "title"
    print('modify', type(doc))

if __name__ == '__main__':
    print('Opening Bokeh application on http://localhost:5006/')
    server = Server({'/': modify}, num_procs=1)
    server.start()
    server.io_loop.add_callback(server.show, "/")
    server.io_loop.start()

您可以使用以下命令运行示例:

python3 example_code.py

我现在的问题是:如何使用 python 回调选择所有 Bokeh 圆形字形,就像我使用 TapTool 手动选择相同的字形一样?

【问题讨论】:

    标签: python bokeh interactive


    【解决方案1】:

    在 Bokeh 中,TapTool 可让您仅选择一个字形并将其他字形静音。在您的示例中,您仍然可以通过 r.data_source.selected.indices = [0,1] 在 Python 回调中选择两个圆圈,但目的是什么?

    对于多字形选择,您可以使用 BoxSelectToolLassoSelectToolPolySelectTool

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多