【发布时间】:2018-11-22 23:05:01
【问题描述】:
我想在一个图中使用多个Hovertools 以及Hovertool 的names 属性来选择性地应用每个工具。举个例子
hover1 = HoverTool(tooltips=[("group", "1")], names = ['line1'])
hover2 = HoverTool(tooltips=[("group", "2")], names = ['lines2'])
以及两个数据源:
source1 = ColumnDataSource(data=dict(
xs=[[1, 3, 2], [3, 4, 6, 6]],
ys=[[2, 1, 4], [4, 7, 8, 5]],
))
source2 = ColumnDataSource(data=dict(
xs=[[1, 3, 2], [6, 7, 9, 8]],
ys=[[-1, 0, 1], [1, 1, 2, 1]]
))
我认为以下(使用 bokeh.models API)应该做我想做的事
p = figure(plot_width=400, plot_height=400)
l1 = MultiLine(xs='xs', ys='ys', name='lines1')
l2 = MultiLine(xs='xs', ys='ys', name='lines2')
p.add_tools(hover)
p.add_tools(hover2)
p.add_glyph(source1, l1)
p.add_glyph(source2, l2)
show(p)
唉,结果图中的Hovertools 不起作用(即没有显示工具提示)。使用 bokeh.plotting API 如下,一切都按预期工作:
p = figure(plot_width=400, plot_height=400, tools=[hover, hover2])
p.multi_line(xs='xs', ys='ys', source=source1, name='lines1')
p.multi_line(xs='xs', ys='ys', source=source2, name='lines2')
show(p)
问题:如何使用 bokeh.models API 复制 bokeh.plotting API 的结果?
【问题讨论】:
-
您可以在一个
Hovertool上拥有多个渲染器。但据我所知,你不能在同一个情节上使用多个Hovertool。您可以使用名为CustomJSHover的回调自定义悬停工具提示。检查文档 -
@ChesuCR 使用绘图 API 时会出现关于重复工具的警告,但使用多个
HoverTools 似乎可以正常工作(工具栏中甚至每个HoverTool都有一个单独的图标允许单独启用/禁用它)。 -
请参阅this Q&A,了解如何使用多个悬停工具。
-
啊!!很高兴知道。我很久以前就尝试过进行这项工作,但没有成功,也许我使用了不同的工具。无论如何,请检查我写的答案是否对您有用
标签: python python-3.x plot hover bokeh