带有悬停的hvplot networkx节点名称

时间:2019-03-20 14:51:58

标签: bokeh networkx holoviews

我正在将hvplot(0.4.0版)与networkx无向图(networkx 2.1版)一起使用。使用bokeh后端绘制图形时,我希望悬停显示节点名称而不是“ index:number”。

文档中所有在线示例均带有“ index:number”,我试图将名称传递给“ labels” kwargs,但这会导致错误:

  

DataError:提供的数据不包含指定的维度,找不到以下维度:

import networkx as nx
import hvplot.networkx as hvnx
import holoviews as hv
hv.extension('bokeh')
GG = nx.Graph()
GG.add_edge('A','B')
GG.add_edge('B','C')
GG.add_edge('C','A')
hvnx.draw(GG)

enter image description here

遍历GG对象,提供以下信息

for ii in GG.nodes():

    print(ii,type(ii))

A <class 'str'>
C <class 'str'>
B <class 'str'>

for ee in GG.edges():

    print(ee,type(ee))

('A', 'C') <class 'tuple'>
('A', 'B') <class 'tuple'>
('C', 'B') <class 'tuple'>

2 个答案:

答案 0 :(得分:0)

似乎您要尝试的操作应该是默认行为,并且可能代表HoloViews中的某些回归。也就是说,实际的悬停索引数据实际上已添加到绘图中,只是未正确引用。在您的示例中,您可以通过明确声明bokeh HoverTool来确保正确使用了它:

from bokeh.models import HoverTool

GG = nx.Graph()
GG.add_edge('A','B')
GG.add_edge('B','C')
GG.add_edge('C','A')
hvnx.draw(GG).opts(tools=[HoverTool(tooltips=[('index', '@index_hover')])])

enter image description here

我已经提交了an issue来记录这种回归,您应该期望在holoviews 1.12.0中可以解决此问题。

答案 1 :(得分:0)

我的解决方案

var selected_nodes = cb_data.source.selected["1d"].indices.map(function (selected_node_index) {
  return cb_data.source.data.index_hover[selected_node_index];
});


see cb_data.source.selected["1d"].indices