【问题标题】:Bokeh: Single tooltip for multiple plots散景:多个绘图的单个工具提示
【发布时间】:2017-09-04 10:50:45
【问题描述】:

我在同一张图上有 3 个图 (Bokeh 0.12.7)

我想显示一个工具提示,其中包含 3 个图表的所有数据的摘要,如下所示:

但是每当鼠标指针太靠近多个绘图时,我都会获得 2/3 重叠(并且相同)的工具提示,例如在这种情况下:

可以将工具提示限制为单个绘图,但这意味着如果鼠标指针接触其他两个绘图,则不会发生任何事情:在以下代码中,我使用 HoverTool 中的参数names 将工具提示应用于第一个绘图仅作图。

有没有办法让一个悬停工具对所有情节做出反应?

COMMON_PARAM = dict(x="date_time", source=self.data_source, line_alpha=GRAPH_LINE_ALPHA, line_width=GRAPH_LINE_WIDTH)

line1 = self.figure.line(y=f1,
                         line_color=GRAPH_LINE_1_COLOR,                                                  
                         name="line_with_hovertool",
                         **COMMON_PARAM)

line2 = self.figure.line(y=f2,
                         line_color=GRAPH_LINE_2_COLOR,
                         **COMMON_PARAM)

line3 = self.figure.line(y=f3),
                         line_color=GRAPH_LINE_3_COLOR,
                         **COMMON_PARAM)

hover = HoverTool(
    names=["line_with_hovertool"],    # applies only to line1
    tooltips=
    """
    ....
    """)

self.figure.add_tools(hover)

【问题讨论】:

标签: tooltip bokeh


【解决方案1】:

一种可能的解决方法是将悬停模式更改为“vline”。这意味着当用户在绘图窗口的任意位置从左向右移动鼠标时,将出现悬停。然后,您可以将悬停工具提示限制为仅在字形上,就像您已经完成的那样。

显然,如果这不是可取的,我不确定目前是否有更好的方法,所以它可能只需要在短期内工作/直到解决。

当您第一次实例化悬停工具时,可以根据“模式”属性下的散景文档设置 Vline。 http://docs.bokeh.org/en/latest/docs/reference/models/tools.html#bokeh.models.tools.HoverTool.mode

【讨论】:

  • 谢谢你,@Anthonydouc。我已经尝试过了,但发现即使使用 vline 所有 3 个工具提示也会一起出现。正如您所说,我可以使用 names 将工具提示链接到单行,但是随着它消失(我可以隐藏一行而使其他行可见),工具提示就消失了。但是你给了我一个想法:我将在图表中间添加一个额外的“几乎不可见”的图,其中 y 为常数(背景颜色相同,没有图例),并将工具提示仅链接到此。我也会解决移动鼠标时tooltip如此疯狂上下跳动的问题。
  • 是的,不幸的是它不是一个干净的解决方案。我认为另一种方法是根据线条的可见性隐藏和显示悬停工具提示,如果这会导致任何问题,但我有很多问题。 aither.com.au/water-markets/… 示例在这里(使用散景)
  • @Anthonydouc 该情节的代码是否在线?我现在想做一些非常相似的事情。
  • 不,很遗憾不是。它也是用 bokeh 版本 0.12.4 编写的(并且对于很多自定义 JS 来说非常痛苦)。您想复制它的某些特定功能吗?可以创建具有这些方面的要点
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-17
  • 2017-12-31
  • 2012-12-18
相关资源
最近更新 更多