Боке - получить информацию о выбранных точках

У меня есть несколько точек, которые я рисую в диаграмме рассеяния и показываю в окне веб-браузера (с использованием боке).

Для выделения я использую 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)

person Marek    schedule 09.01.2015    source источник


Ответы (1)


Вы можете получить информацию с помощью свойства source.selected, если вы хотите получать уведомления о каждом изменении, которое вы должны создать обратный вызов, это будет примерно так:

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

source.on_change('selected', callback)

Дополнительные сведения см. В этом примере.

person elyase    schedule 14.01.2015