2015-01-09 3 views
3

У меня есть несколько моментов, которые я намереваюсь зарисовать в окне рассеяния и показать в окне веб-браузера (используя 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) 

ответ

4

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

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

source.on_change('selected', callback) 

См. this example для получения более подробной информации.

Смежные вопросы