Bokeh中的多行悬停

8

由于客户项目的需求,这周可能会有Continuum的某位人员查看此事,所以您很快就会有好运。 - bigreddot
@bigreddot 你知道这个问题还存在吗?在 Bokeh 中突出显示行将是一个非常酷的功能。 - jonalm
是的,请见下文。 - bigreddot
1个回答

16

从Bokeh 0.12.4版本开始(实际上更早,但我忘记了确切的发布版本),悬停工具支持mutli_line

from collections import defaultdict

import numpy as np
from scipy.stats import norm

from bokeh.plotting import show, figure
from bokeh.models import ColumnDataSource, HoverTool
from bokeh.palettes import Viridis6

RT_x = np.linspace(118, 123, num=50)

mass_spec = defaultdict(list)
for scale, mz in [(1.0, 83), (0.9, 55), (0.6, 98), (0.4, 43), (0.2, 39), (0.12, 29)]:
    mass_spec["RT"].append(RT_x)
    mass_spec["RT_intensity"].append(norm(loc=120.4).pdf(RT_x) * scale)
    mass_spec['MZ_tip'].append(mz)
    mass_spec['Intensity_tip'].append(scale)
mass_spec['color'] = Viridis6

source = ColumnDataSource(mass_spec)

p = figure(plot_height=400)
p.multi_line(xs='RT', ys='RT_intensity', legend="Intensity_tip",
             line_width=5, line_color='color', line_alpha=0.6,
             hover_line_color='color', hover_line_alpha=1.0,
             source=source)

p.add_tools(HoverTool(show_arrow=False, line_policy='next', tooltips=[
    ('MZ', '@MZ_tip'),
    ('Rel Intensity', '@Intensity_tip')
]))

show(p)

这会导致

在此输入图片描述


谢谢。我困惑的原因是我尝试在“MultiLine”模型图形中使用hover_line_alpha关键字,这会在0.12.4中给出AttributeError:对于MultiLine,意外的属性'hover_line_alpha'...。 'bokeh.plotting.figure'比'bokeh.models.Plot'更受欢迎吗(老实说我真的不理解其中的区别)? - jonalm
没错,hover_line_alpha 是一个更高级别的便利功能。MultiLinePlot 都是低级别的构建块。例如,Plot 基本上只是一个可以绘制东西的容器。你可以把轴和网格放进去,但是 必须自己做。figure 是一个更高级别的 API,它为您组合了一个带有轴和工具的基本图。更多信息:http://bokeh.pydata.org/en/latest/docs/user_guide/concepts.html#interfaces - bigreddot
1
如果您想在悬停工具提示中添加x和y值,可以使用$x$y。特殊已知字段的完整列表:http://docs.bokeh.org/en/latest/docs/reference/models/tools.html#bokeh.models.tools.HoverTool.tooltips - Matt Popovich
这还能用吗?我正在尝试复制它,但当我将鼠标悬停在图表上时没有显示任何内容。 - Hojin Cho
1
最近出现了一个 bug。这个 bug 已在本周最新的 2.3 版本中修复。 - bigreddot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接