Я хочу добавить всплывающие подсказки к ColumDataSource()
, которые привязываются к ближайшей точке данных.Но при использовании @x, @y
это показывает ???вместо ближайшего значения.Использование $x, $y
работает нормально.
Ниже приведен пример:
from bokeh.plotting import show, figure, ColumnDataSource
from bokeh.models import HoverTool
a = [x for x in range(10)]
b = [x for x in range(10)]
c = [0.5 * x for x in range(10)]
source = ColumnDataSource(data=dict(a=a, b=b, c=c))
p = figure()
p.line(x='a', y='b', source=source)
p.line(x='a', y='c', source=source)
p.add_tools(HoverTool(
tooltips=[
('index', '$index'),
('($x, $y)', "($x, $y)"),
('(@x, @y)', "(@x, @y)"),
('(@a, @b, @c)', "(@a, @b, @c)")],
line_policy='nearest',
mode='mouse'))
show(p)
РЕЗУЛЬТАТ
Когда я передаю списки напрямую, это работает правильно…
На рисунке с двумя графиками я хочу показать только ближайшее значение текущего отображаемого графика.Поэтому использование @b, @c
не то, что я хочу.
Обновление:
На рисунке есть два графика, и я хочу только показать значение оси Y наведенного графика.
Результат, который я хочу получить:
Но в этом случае я передаю объекты списка напрямую:
p.line(a, b)
p.line(a, c)
p.add_tools(HoverTool(
tooltips=[
('index', '$index'),
('(@x, @y)', "(@x, @y)")],
line_policy='nearest',
mode='vline'))
При использовании ColumnDataSource()
я должен использовать имя переменных и не могу ссылаться на ось y, используя @y
.
Поэтому я получаю следующий результат:
p.line(x='a', y='b', source=source)
p.line(x='a', y='c', source=source)
p.add_tools(HoverTool(
tooltips=[
('index', '$index'),
('(@x, @y)', "(@x, @y)"),
('@a', '@a'),
('@b', '@b'),
('@c', '@c')],
line_policy='nearest',
mode='vline'))
HoverTool не показывает значение оси Y только наведенного графика.Показывает значение обоих (@b and @c
).