散景自定义工具提示堆叠在彼此之上

Bokeh custom tooltips stacking on top of each other

我有一个带有自定义工具提示的散点图,当鼠标悬停在两个点重叠的屏幕上时,两个点的工具提示被绘制在彼此之上。

有没有办法像默认工具提示一样将两者合并为一个工具提示,或者强制以非交叉方式绘制它们?

从 Bokeh 1.4 开始,没有。有一个 关于添加用于过滤命中测试结果的钩子,例如限制为只有一个结果或一些较小的固定数量的结果。但这与提供 "visual dodge" 会使 whatever 结果不重叠有点不同。如果这是你的主要问题,我会建议完全抑制工具提示,并使用悬停工具上的 callback 来更新一些其他离图 Div 和 table 中的信息或一些其他的 suitable 压缩表示。

此代码永远不会显示超过 1 个工具提示 (Bokeh v1.3.0):

from bokeh.plotting import figure, show
from bokeh.models import CustomJS

data = dict(
        x=[1, 2, 3],
        y=[1, 2, 3],
        color=['red', 'green', 'blue'], ) 

p = figure(tooltips=[('x','@x'),('y', '@y')])
p.circle('x', 'y', color='color', size=10, source = data)

code= '''if (cb_data.index.indices.length > 1) {
            document.getElementsByClassName('bk-tooltip')[0].style.display = 'none'; 
        }'''

p.hover.callback = CustomJS(code = code)

show(p)

此解决方案的缺点是,当所有点完全相互重叠时,根本不会显示任何工具提示