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

如何在PyVis可视化的NetworkX图中显示节点属性?

在PyVis中显示图节点的自定义属性

我来帮你解决这个问题——默认情况下PyVis只会显示节点的ID(比如CHEBI:xxxx),但我们可以通过修改节点的label和title属性,让它展示你需要的节点信息(比如name或者完整的属性集合)。

解决方案代码

直接修改你的代码,添加节点属性的自定义逻辑:

import networkx as nx
import obonet
from pyvis.network import Network

# 读取CHEBI本体并创建子图
G = obonet.read_obo('https://ftp.ebi.ac.uk/pub/databases/chebi/ontology/chebi_core.obo')
H = nx.ego_graph(G, 'CHEBI:36464', 15)

# 初始化PyVis网络
nt = Network('1500px', '1500px', notebook=True)

# 从NetworkX导入图结构
nt.from_nx(H)

# 遍历所有节点,自定义显示内容
for node in nt.nodes:
    # 获取原NetworkX节点的所有属性
    nx_node_attrs = H.nodes[node['id']]
    
    # 把节点的name设为主要显示标签(替代默认的CHEBI ID)
    node['label'] = nx_node_attrs.get('name', node['id'])
    
    # 把所有属性拼接成多行文本,作为鼠标悬停时显示的提示
    node['title'] = '\n'.join([f"{key}: {value}" for key, value in nx_node_attrs.items()])

# 生成可视化页面
nt.show('H.html')

代码说明

  • 替换节点主标签:通过node['label']设置,让节点显示name属性值,如果某个节点没有name,就 fallback 到原来的CHEBI ID。
  • 添加悬停提示:node['title']会在鼠标悬停节点时显示,这里把所有节点属性拼接成了易读的多行文本,你也可以根据需求只保留特定属性,比如只显示name和def:
    node['title'] = f"名称: {nx_node_attrs.get('name', '无')}\n定义: {nx_node_attrs.get('def', '无')}"
    

这样修改后,你的可视化图里节点会显示友好的名称,鼠标放上去还能看到完整的节点属性信息~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 10:05:26