问题描述
这是我的第一个 stackoverflow 问题,所以我为重复的帖子道歉;我没有对 original thread 发表评论的声誉,也不确定如何提出这个问题。
我有一个 plot with a hover tooltip 经常显示一长串返回值。如果有重叠的值,我只想显示一个(任何一个)。
Screenshot of bokeh plot with many hover tooltips
我已经尝试了 original thread 上发布的多种 CSS 解决方案,但仍然显示了多个工具提示。我不确定我是否错误地实现了代码片段,或者解决方案是否不再有效。
我使用的是散景 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)