Python/Bokeh绘图Hover提示框weight、height字段显示???问题
问题原因
- Hover提示框中
@weight、@height是从节点渲染器的数据源中读取字段值,你当前的节点数据源仅传入了index字段,没有包含重量、身高两个字段,因此工具找不到对应值就会显示???。 - 你当前配置的画布坐标范围和实际数据坐标不匹配,会导致大部分节点超出画布无法正常显示。
修复方法
修改两处代码即可:
- 给节点数据源补充
weight和height字段
找到代码中graph.node_renderer.data_source.data = dict(index=node_indices)这一行,替换为:
graph.node_renderer.data_source.data = dict( index=node_indices, weight=df['weight (kg)'].tolist(), height=df['height (m)'].tolist() )
- 调整画布坐标范围适配你的数据
修改figure初始化时的x_range和y_range参数:
plot = figure(tooltips = HOVER_TOOLTIPS, tools="pan,wheel_zoom,save,reset", active_scroll='wheel_zoom', x_range=Range1d(500, 850), y_range=Range1d(500, 900), title='Network')
修改完成后重新运行代码,Hover提示框即可正常显示重量、身高数值,所有节点也会正常展示在画布中。
可选扩展:如果需要在提示框中展示姓名,只需要在节点数据源中加入
name=df['Names'].tolist(),同时在HOVER_TOOLTIPS中增加("姓名", "@name")项即可。
内容的提问来源于stack exchange,提问作者Elle Oliver
相关产品推荐
相关产品推荐

