You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pyvis交互式图中显示Networkx的节点与边属性

补充说明

我已将pyvis升级至0.3.2版本,图表现在可正常工作。
若你关注如何在Networkx图的Pyvis可视化中显示节点与边属性,可继续阅读。


原问题

我有两个Pandas DataFrame:edges_df和nodes_df,用它们创建了Networkx图G,并将其传入Pyvis网络。

edges_df结构如下:

srcdstcolortitle
14013#379951T/B
146515#379951T/B
712#0b03fc78
001#0b03fc62
139410#379951T/B

nodes_df结构如下:

idcolortitle
11#47abfcI am node 1
1515#47abfcI am node 15
1414#f24e77I am node 14
22#f24e77I am node 2
88#f24e77I am node 8

我创建G的代码如下:

# 从Pandas边表创建Networkx图
G = nx.from_pandas_edgelist(
    df=edges_df,
    source='src',
    target='dst',
    edge_attr=['color', 'title']
)

# 从Pandas设置节点属性
nx.set_node_attributes(
    G=G,
    values=nodes_df_renamed.set_index('id').to_dict('index')
)

文档说明:

请注意,与Pyvis使用的属性名(如title)一致的Networkx节点属性,会直接映射为对应的Pyvis节点属性。

因此我认为,若Networkx图的属性名符合Pyvis命名规范,生成的图表应自动显示各节点属性。

但当我从G构建Pyvis Network时,生成的图表未按预期显示颜色或标题。例如,我期望节点1为蓝色(#47abfc),鼠标悬停时显示字符串'I am node 1'。

# 导入模块
from pyvis import network as net
import networkx as nx
from IPython.display import HTML

# 从G创建Pyvis图
gpv = net.Network(notebook=True, cdn_resources='in_line')
gpv.from_nx(G)
gpv.save_graph('example.html')
HTML(filename='example.html')

遗憾的是,节点和边的title或color属性均未按预期渲染。

图表未正确显示属性

如何让Pyvis根据Networkx图的对应属性渲染节点和边?
我的数据量极大(250亿条边),希望避免使用循环逐个添加节点或边。


总结

创建符合Pyvis命名规范的节点与边属性的Networkx图,生成的可视化将继承这些属性。
例如,添加节点属性title后,鼠标悬停时会显示对应节点的标题。

属性正常显示

内容的提问来源于stack exchange,提问作者Arturo Sbr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 00:53:22