Bokeh Plotting: включить всплывающие подсказки только для некоторых глифов.

У меня есть фигура с некоторыми глифами, но я хочу, чтобы всплывающие подсказки отображались только для определенных глифов. Есть ли в настоящее время способ добиться этого в боке?

В качестве альтернативы, есть ли способ нарисовать две фигуры друг над другом? Похоже, это позволило бы мне добиться того, чем я хочу заниматься.


person Imaduck    schedule 03.04.2015    source источник


Ответы (4)


Благодаря этой странице в группах Google я понял, как это можно сделать. person WillZ    schedule 20.08.2015


Вам нужно назвать свой глиф атрибутом name= на глифе, для которого вы хотите активировать инструмент наведения, а затем установить это имя в атрибуте names= инструмента наведения. (Обратите внимание на атрибут name= глифа fig.line в примере ниже.

hover = HoverTool( mode='vline', line_policy='nearest', names=['ytd_ave'],
    tooltips=[
        ("Week Number", "@WeekNumber"),
        ("OH for the Week", "@OverHead{0.00}%"),
        ("OH Average", "@AveOverHead{0.00}%"),
        ("Non-Controllable Hours", "@NonControllableHours{0.0}"),
        ("Controllable Hours", "@ControllableHours{0.0}"),
        ("Total Hours", "@TotalHours{0.0}"),
    ]
)

fig = Figure(title='Weekly Overhead', plot_width=950, plot_height=400,
         x_minor_ticks=2, tools=['pan', 'box_zoom', 'wheel_zoom', 'save',
                                 'reset', hover])

ch = fig.vbar('WeekNumber', top='ControllableHours', name='Over Head', 
         color='LightCoral', source=sources, width=.5)
nch = fig.vbar('WeekNumber', bottom='ControllableHours', top='TotalOHHours',
         name='Non-Controllable Over Head', color='LightGray', 
         source=sources, width=.5)
bh = fig.vbar('WeekNumber', bottom='TotalOHHours', top='TotalHours',
         name='Project Hours', color='LightGreen', source=sources,
         width=.5)

ave = fig.line('WeekNumber', 'AveOverHead', source=sources, color='red',
         y_range_name='Percent_OH', name='ytd_ave')
person Nickleman    schedule 03.05.2017
comment
Вместо того, чтобы явно создавать HoverTool, вы можете добавить 'hover' в tools аргумент списка при создании рисунка, а затем: hover_tool = fig.select(type=HoverTool) hover_tool.names = ["ytd_ave"] - person dux2; 11.10.2018

Будет ли ответ Чжана работать, но вы получите несколько инструментов наведения. Если это нежелательно, вы можете добавить средства визуализации к существующему инструменту наведения курсора:

from bokeh import plotting
from bokeh.models import HoverTool, PanTool, ResetTool, WheelZoomTool

hover_tool = HoverTool(tooltips=[('col', '@x'),('row', '@y')])  # instantiate HoverTool without its renderers
tools = [hover_tool, WheelZoomTool(), PanTool(), ResetTool()]  # collect the tools in a list: you can still update hover_tool

plot = plotting.figure(tools=tools)
plot.line(x_range, y_range)  # we don't want to put tooltips on the line because they can behave a little strange
scatter = plot.scatter(x_range, y_range)  # we assign this renderer to a name...
hover_tool.renderers.append(scatter)  # ...so we can add it to hover_tool's renderers.

Итак, отличия здесь:

  1. Вы можете создать свой глиф на высоком уровне, используя интерфейс plotting, и это все равно будет работать.
  2. Вам не нужно каждый раз создавать новый HoverTool (если вам не нужны разные всплывающие подсказки), просто добавьте его в средства визуализации существующего инструмента.
person tterry    schedule 01.06.2016
comment
Да, это проблема, я заметил это недавно. В github уже есть проблема, чтобы потенциально сгруппировать эти инструменты наведения. github.com/bokeh/bokeh/issues/5497 - person WillZ; 19.01.2017
comment
@WillZ Я думаю, что текущая реализация в порядке, просто возникла проблема с случайным созданием тонны инструментов. Я могу представить себе несколько случаев, когда два символа на одном и том же сюжете выиграют от использования разных всплывающих подсказок. - person tterry; 19.01.2017
comment
@tterry Я согласен. Просто удобство - person WillZ; 20.01.2017

ОБНОВЛЕНИЕ от специалистов по обслуживанию: теперь поддерживается наведение как для строк, так и для изображений



УСТАРЕЛО:

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

См .: http://bokeh.pydata.org/en/latest/docs/user_guide/objects.html#hovertool

person dyingoptimist    schedule 06.04.2015
comment
Да, я думал об этом, но у меня просто нет способа сделать это, если я не хочу сохранить сюжет как фигуру, а затем строить поверх него, что действительно взломано. - person Imaduck; 06.04.2015
comment
@Imaduck Я думаю, это будет отличная функция для боке. Я пытаюсь сделать то же самое, но всплывают подсказки для тех глифов, которые мне не нужны (но все же хочу видеть на диаграмме). - person WillZ; 20.08.2015