在散景图中添加可点击的圆圈

时间:2018-04-02 14:52:31

标签: python data-visualization bokeh

我正在尝试将某些回调添加到散景图上绘制的圆圈中。每个圆圈与columndatasource的某些记录相关联。我想在点击相应的圆圈时访问该记录。有没有办法在散景中添加回调? 我该怎么办?

我正在使用以下代码

fig =figure(x_range=(-bound, bound), y_range=(-bound, bound),
                plot_width=800, plot_height=500,output_backend="webgl")

fig.circle(x='longitude',y='latitude',size=2,source=source,fill_color="blue",
                fill_alpha=1, line_color=None)

1 个答案:

答案 0 :(得分:1)

然后,您要将on_change回调添加到数据源的selected属性。这是一个最小的例子。如上所述,python回调需要Bokeh服务器(这是python回调实际运行的地方,因为浏览器对python一无所知),所以必须运行它,例如bokeh serve --show example.py(或者,如果您在笔记本中,请遵循this example notebook中的模式。)

# example.py

from bokeh.io import curdoc
from bokeh.models import ColumnDataSource
from bokeh.plotting import figure

source = ColumnDataSource(data=dict(x=[1,2,3], y=[4,6,5]))

p = figure(title="select a circle", tools="tap")
p.circle('x', 'y', size=25, source=source)

def callback(attr, old, new):
    # This uses syntax for Bokeh >= 0.13
    print("Indices of selected circles: ", source.selected.indices)

source.selected.on_change('indices', callback)

curdoc().add_root(p)