我有一组数据点,每个数据点都有一个独特的网址。我想要做的是能够分散绘制我的数据,然后在单击字形时打开关联的URL。我已经阅读了here的讨论并按照示例here进行了阅读,但是我没有找到我想要的地方。
我有点随意和随意地尝试将标签属性中的网址保存起来,以便TapTool召回:
from bokeh.models import OpenURL, TapTool
from bokeh.plotting import figure, show
p = figure(plot_width = 1200,
plot_height = 700,
tools = 'tap')
p.circle(data_x,
data_y,
tags = list(data_urls))
taptool = p.select(type = TapTool, arg = "tag")
taptool.callback = OpenURL(url = '@tag')
show(p)
我无法在Bokeh文档中找到任何解释组合我想要的行为所需的螺母和螺栓的地方。至少不是我能理解的。
有人可以指出我正确的方向吗?谢谢!
答案 0 :(得分:0)
tags
属性不相关,并且在很大程度上被废弃了。您需要将URL放在绘图数据源的列中,以便OpenURL
回调可以访问它:
from bokeh.models import ColumnDataSource, OpenURL, TapTool
from bokeh.plotting import figure, show
p = figure(plot_width=400, plot_height=400,
tools="tap", title="Click the Dots")
source = ColumnDataSource(data=dict(
x=[1, 2, 3, 4, 5],
y=[2, 5, 8, 2, 7],
color=["navy", "orange", "olive", "firebrick", "gold"]
))
p.circle('x', 'y', color='color', size=20, source=source)
# use the "color" column of the CDS to complete the URL
# e.g. if the glyph at index 10 is selected, then @color
# will be replaced with source.data['color'][10]
url = "http://www.colors.commutercreative.com/@color/"
taptool = p.select(type=TapTool)
taptool.callback = OpenURL(url=url)
show(p)
这个例子在这里记录(现场):
http://bokeh.pydata.org/en/latest/docs/user_guide/interaction/callbacks.html#openurl