2016-09-07 59 views
1

我想在同一個圖上有散點圖和(基本)線。我只想在分散的圓圈上使用HoverTool,但不是在線上。可能嗎?Python散景只適用於模型上的hovertools而不適用於圖

使用下面的代碼,當我將鼠標懸停在線上(線的任何部分)時,我會收到index: 0(x, y): (???, ???)的工具提示。但在sourceindex: 0數據是完全不同的((x, y): (1, 2))...

df = pd.DataFrame({'a':[1, 3, 6, 9], 'b':[2, 3, 5, 8]}) 

from bokeh.models import HoverTool 
import bokeh.plotting as bplt 

TOOLS = ['box_zoom', 'box_select', 'wheel_zoom', 'reset', 'pan', 'resize', 'save'] 

source = bplt.ColumnDataSource(data=df) 
hover = HoverTool(tooltips=[("index", "$index"), ("(x, y)", "(@a, @b)")]) 

p = bplt.figure(plot_width=600, plot_height=600, tools=TOOLS+[hover], 
    title="My sample bokeh plot", webgl=True) 

p.circle('a', 'b', size=10, source=source) 

p.line([0, 10], [0, 10], color='red') 

bplt.save(p, 'c:/_teszt.html') 

謝謝!!

回答

4

要限制你想要的HoverTool是(默認情況下它是活躍在所有),你可以設置你的字形一個name ATTR活躍,然後指定你希望你的HoverTool是活躍在其名稱也渲染器,

p.circle('a', 'b', size=10, name='circle', source=source) 
hover = HoverTool(names=['circle']) 

文檔:http://bokeh.pydata.org/en/latest/docs/reference/models/tools.html#bokeh.models.tools.HoverTool.names

,或者你可以渲染添加到HoverTool。

circle = p.circle('a', 'b', size=10, source=source) 
hover = HoverTool(renderers=['circle']) 

文檔:http://bokeh.pydata.org/en/latest/docs/reference/models/tools.html#bokeh.models.tools.HoverTool.renderers

+1

謝謝!! 'names'完美適用於bokeh v0.12.1 – ragesz

相關問題