微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在散景中使用悬停工具时仅显示一个工具提示

如何解决在散景中使用悬停工具时仅显示一个工具提示

这是我的第一个 stackoverflow 问题,所以我为重复的帖子道歉;我没有对 original thread 发表评论的声誉,也不确定如何提出这个问题。

我有一个 plot with a hover tooltip 经常显示一长串返回值。如果有重叠的值,我只想显示一个(任何一个)。

Screenshot of bokeh plot with many hover tooltips

我已经尝试了 original thread 上发布的多种 CSS 解决方案,但仍然显示了多个工具提示。我不确定我是否错误地实现了代码片段,或者解决方案是否不再有效。

Screenshot of basic plot from the original post showing the undesired behavior of multiple hover tooltips

我使用的是散景 2.3.3 和 Chrome。基本代码示例如下,我正在尝试进行的最终项目是 here

from bokeh.plotting import figure,show
from bokeh.models import HoverTool,Range1d

custom_hover = HoverTool()

custom_hover.tooltips = """
    <style>
        div.bk-tooltip.bk-right>div.bk>dif:not(:first-child) {
            display:none !important;
            }
        div.bk-tooltip.bk-left>div.bk>dif:not(:first-child) {
            display:none !important;
            }
    </style>


    <b>X: </b> @x <br>
    <b>Y: </b> @y
"""

p = figure(tools=[custom_hover]) #Custom behavior

p.circle(x=[0.75,0.75,1.25,1.25],y=[0.75,size=230,color='red',fill_alpha=0.2)
p.y_range = Range1d(0,2)
p.x_range = Range1d(0,2)

show(p)

感谢您的帮助!

解决方法

下面的解决方案只允许一个可见的工具提示。这可以通过修改参数 num 来改变。

此解决方案已使用 Bokeh 2.3.2 进行测试。

from bokeh.plotting import figure,show,output_notebook
from bokeh.models import HoverTool,Range1d,CustomJSHover
output_notebook()

p = figure(tools='')
p.circle(x=[0.75,0.75,1.25,1.25],y=[0.75,size=230,color='red',fill_alpha=0.2)
p.y_range = p.x_range = Range1d(0,2)

t = """
<div @x{custom}>
    <b>X: </b> @x <br>
    <b>Y: </b> @y
</div>
"""

# define how many tooltips you want to show as maximum
num = 1

f = CustomJSHover(code=f"""
special_vars.indices = special_vars.indices.slice(0,{num})
return special_vars.indices.includes(special_vars.index) ? " " : " hidden "
""")

p.add_tools(HoverTool(tooltips=t,formatters={'@x': f}))

show(p)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。