我正在使用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)
循环通过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'>
看起来你想要做的应该是默认行为,并且可能代表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')])])
我已经提交了an issue来记录这个回归,你应该期望在holoviews 1.12.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];
});