加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Bokeh:在链接的图中同步悬停工具提示

发布时间:2020-12-20 11:50:22 所属栏目:Python 来源:网络整理
导读:我有两个相关的情节.悬停时,我想在两个图中都显示工具提示.我已经使用链接选项取得了巨大成功,但现在我也要链接工具提示. 以下是一个例子.工具提示显示在左侧图中.如果我可以在右图中显示相应的工具提示,那就太好了.相应的数据点是具有相同ID的数据点. (共享
我有两个相关的情节.悬停时,我想在两个图中都显示工具提示.我已经使用链接选项取得了巨大成功,但现在我也要链接工具提示.

以下是一个例子.工具提示显示在左侧图中.如果我可以在右图中显示相应的工具提示,那就太好了.相应的数据点是具有相同ID的数据点. (共享3D列数据源;每个绘图采用不同的2D视图).

enter image description here

PS.我将改进工具提示中的文字.

更新

结束了类似的事情:

enter image description here

解决方法

我不确定如何使用工具提示功能直接执行此操作,但这是一种使用Text字形模仿工具提示的方法:

from bokeh.io import gridplot
from bokeh.plotting import figure,output_file,show
from bokeh.models import ColumnDataSource,Circle,HoverTool,CustomJS,Text
import numpy as np
(x,y,z) = np.arange(0,100,10),100-np.arange(0,np.arange(0,10)/5

output_file("hover_callback.html")

p = figure(width=300,height=300,title='Hover over points',x_axis_label='x',y_axis_label='y')
p.scatter(x,y)
p2 = figure(width=300,y_axis_label='z',x_range=p.x_range)
p2.scatter(x,z)

source = ColumnDataSource({'x': x,'y': y,'z': z,'txt': ['x='+str(x[i])+',y='+str(y[i]) for i in range(len(x))],'txt2': ['x='+str(x[i])+',z='+str(z[i]) for i in range(len(x))]})

invisible_circle = Circle(x='x',y='y',fill_color='gray',fill_alpha=0.0,line_color=None,size=20) # size determines how big the hover area will be
invisible_circle2 = Circle(x='x',y='z',size=20)

invisible_text = Text(x='x',text='txt',text_color='black',text_alpha=0.0)
visible_text = Text(x='x',text_alpha=0.5)

invisible_text2 = Text(x='x',text='txt2',text_alpha=0.0)
visible_text2 = Text(x='x',text_alpha=0.5)

cr = p.add_glyph(source,invisible_circle,selection_glyph=invisible_circle,nonselection_glyph=invisible_circle)
crt = p.add_glyph(source,invisible_text,selection_glyph=visible_text,nonselection_glyph=invisible_text)
cr2 = p2.add_glyph(source,invisible_circle2,selection_glyph=invisible_circle2,nonselection_glyph=invisible_circle2)
cr2t = p2.add_glyph(source,invisible_text2,selection_glyph=visible_text2,nonselection_glyph=invisible_text2)

code = "source.set('selected',cb_data['index']);"
callback = CustomJS(args={'source': source},code=code)
p.add_tools(HoverTool(tooltips=None,callback=callback,renderers=[cr,crt]))
p2.add_tools(HoverTool(tooltips=None,renderers=[cr2,cr2t]))
layout = gridplot([[p,p2]])
show(layout)

输出如下所示:

hover example

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读