HoverTool用于散景散点图中的多个数据系列

发布于 2021-01-29 17:44:09

我有以下使用numpy和bokeh的小示例脚本:

import numpy as np
import bokeh.plotting as bp
from bokeh.objects import HoverTool 
bp.output_file('test.html')

fig = bp.figure(tools="reset,hover")
x = np.linspace(0,2*np.pi)
y1 = np.sin(x)
y2 = np.cos(x)
s1 = fig.scatter(x=x,y=y1,color='#0000ff',size=10,legend='sine')
s1.select(dict(type=HoverTool)).tooltips = {"x":"$x", "y":"$y"}
s2 = fig.scatter(x=x,y=y2,color='#ff0000',size=10,legend='cosine')
s2.select(dict(type=HoverTool)).tooltips = {"x":"$x", "y":"$y"}
bp.show()

问题在于,悬停工具仅适用于余弦曲线,而不适用于正弦曲线。

我知道一种选择是同时绘制两个系列并更改余弦数据点的颜色:

import numpy as np
import bokeh.plotting as bp
from bokeh.objects import HoverTool 
bp.output_file('test.html')

fig = bp.figure(tools="reset,hover")
x = np.linspace(0,2*np.pi)

y1 = np.sin(x)
y2 = np.cos(x)

x = np.array([x,x]).flatten()
y = np.array([y1,y2]).flatten()

blue = np.array('#0000ff').flatten()
red = np.array('#ff0000').flatten()
colors = np.array([blue.repeat(len(y1)),red.repeat(len(y1))]).flatten()

s1 = fig.scatter(x=x,y=y,color=colors,size=10,legend='sine & cosine')
s1.select(dict(type=HoverTool)).tooltips = {"x":"$x", "y":"$y"}
bp.show()

但是随后我松开了第二种颜色的图例条目。

如何设法将鼠标悬停在两个数据集上并查看相应的工具提示?

谢谢!

最高

关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    最初的答案是古老且过时的,这是如何使用任何现代版本的Bokeh来实现此目的:

    from bokeh.plotting import figure, show
    import numpy as np
    
    x = np.linspace(0, 2*np.pi)
    y1 = np.sin(x)
    y2 = np.cos(x)
    
    fig = figure(tools="reset", tooltips=[("x", "$x"), ("y", "$y")])
    s1 = fig.scatter(x, y1, color='#0000ff', size=10, legend_label='sine')
    s2 = fig.scatter(x, y2, color='#ff0000', size=10, legend_label='cosine')
    
    show(fig)
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看