我正在将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)
遍历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'>
答案 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')])])
我已经提交了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];
});