2016-04-05 166 views
2

我在Bokeh中繪製了很多點,並且我已將HoverTool添加到圖的工具列表中,以便鼠標在顯示時使用鼠標的x,y座標接近一個字形。使用HoverTool()工具時僅顯示一個工具提示

當鼠標靠近一組密集在一起的字形時,我會得到與字形一樣多的工具提示。我只需要一個工具提示,即最接近的字形之一。這不只是一個演示的細節,因爲對於很多點,這導致:

    與情節緩慢的相互作用
  • ,與瀏覽器,而所有的提示產生
  • 在很長的提示,這裏被卡住相同的信息被重複許多次,因爲許多符號,是接近光標

一個例子如下,其中的代碼以複製的行爲: enter image description here

import numpy.random 
from bokeh.plotting import figure, output_notebook, show 
from bokeh.models import HoverTool 
output_notebook() 

hover = HoverTool() 
hover.tooltips = [("(x,y)", "($x, $y)")] 

x = numpy.random.randn(500) 
y = numpy.random.randn(500) 

p = figure(tools=[hover]) 
p.circle(x,y, color='red', size=14, alpha=0.4) 

show(p) 
+0

有一個開放的PR可以添加改進的基於策略的選項來懸停工具提示首選項,這將進入0.12版本。 – bigreddot

+0

對此的任何更新,即如何限制HoverTool中顯示的數據點數量? – tuomastik

回答

2

我遇到了類似的問題,並提出了使用自定義工具提示的解決方案。我在頂部插入一個樣式標籤,該標籤僅顯示.bk-tooltip類下的第一個子div,這是第一個工具提示。

這裏有一個工作示例:

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

custom_hover = HoverTool() 

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

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

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

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

show(p) 

這是怎樣的一個哈克的解決方案,但它在Safari,Firefox和Chrome工作。我認爲他們將會出現更長期的solution soon