散景 - 获取有关已选择点的信息

时间:2015-01-09 08:18:14

标签: python charts interactive bokeh

我有几点可以绘制成散点图并在网页浏览器窗口中显示(使用Bokeh)。

为了选择,我使用PolySelectTool或BoxSelectTool。

我想做两件事: 1)获取有关已选择的点的信息,以便计算一些其他信息。 2)由于点代表URL,我希望图表打开一个新的浏览器选项卡,并在我点击一个点(代表URL)时加载一个特定的URL。

我认为代码不重要。但为了使我的问题完整,这里是......

Y = my_data
urls = get_urls(my_data)

TOOLS="pan,wheel_zoom,reset,hover,poly_select,box_select"
p = figure(title = "My chart", tools=TOOLS)
p.xaxis.axis_label = 'X'
p.yaxis.axis_label = 'Y'

source = ColumnDataSource(
    data=dict(
        xvals=list(Y[:,0]),
        yvals=list(Y[:,1]),
        url=urls
    )
)
p.scatter("xvals", "yvals",source=source,fill_alpha=0.2, size=5)
hover = p.select(dict(type=HoverTool))
hover.snap_to_data = False
hover.tooltips = OrderedDict([
    ("(x,y)", "($x, $y)"),
    ("url", "@url"),
])

select_tool = p.select(dict(type=BoxSelectTool))

# 
# I guess perhaps something should be done with select_tool
#

show(p)

1 个答案:

答案 0 :(得分:5)

您可以使用source.selected属性获取信息,如果您希望收到必须创建回调的每个更改的通知,它将是这样的:

def callback(obj, attr, old, new):
    ...

source.on_change('selected', callback)

有关详细信息,请参阅this example