散景:每个雕文一个网址

时间:2017-06-07 09:19:30

标签: python-3.x bokeh

我有一组数据点,每个数据点都有一个独特的网址。我想要做的是能够分散绘制我的数据,然后在单击字形时打开关联的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文档中找到任何解释组合我想要的行为所需的螺母和螺栓的地方。至少不是我能理解的。

有人可以指出我正确的方向吗?谢谢!

1 个答案:

答案 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