hvplot networkx节点名称悬停

问题描述 投票:0回答:2

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

文档中的所有在线示例都有“index:number”,我试图将名称传递给“标签”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'>
bokeh networkx holoviews
2个回答
0
投票

看起来你想要做的应该是默认行为,并且可能代表HoloViews中的一些回归。也就是说,实际的悬停指数数据实际上被添加到它没有正确引用的图中。在您的示例中,您可以通过显式声明散景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中修复它。


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

© www.soinside.com 2019 - 2024. All rights reserved.