Боке: один URL на глиф

У меня есть набор точек данных, каждый с уникальным URL. То, что я хочу сделать, - это иметь возможность разбросывать график моих данных, а затем открывать связанный URL при нажатии на глиф. Я прочитал обсуждение здесь и последовал примеру здесь, но ни тот, ни другой не дает мне того, кем я хочу быть.

Я несколько произвольно и беспорядочно пытался сохранить URL-адреса в свойстве тега, чтобы их вызывал 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 ответ

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

Другие вопросы по тегам