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

如何从pyvis图中提取节点in_degree、out_degree属性,能否转换为networkx?

pyvis图转networkx图的实现方案及出入度获取方法

该方案完全可以实现,是目前获取pyvis图节点出入度的成熟方案之一。

实现原理

pyvis的Network实例内置nodes、edges两个公开属性,分别存储所有节点、边的元数据,格式为包含字典的列表,可直接读取这两个属性完成到networkx图的转换。

具体实现代码

1. 依赖导入

import networkx as nx
from pyvis.network import Network

2. 图转换逻辑

需要匹配pyvis图的有向/无向属性,创建对应类型的networkx图:

# 此处pyvis_graph替换为你已经创建好的pyvis图实例名
if pyvis_graph.directed:
    # 有向图对应创建DiGraph
    nx_graph = nx.DiGraph()
else:
    # 无向图对应创建Graph
    nx_graph = nx.Graph()

# 添加所有节点,保留节点的全部自定义属性
nx_graph.add_nodes_from((node["id"], node) for node in pyvis_graph.nodes)
# 添加所有边,保留边的全部自定义属性
nx_graph.add_edges_from((edge["from"], edge["to"], edge) for edge in pyvis_graph.edges)

3. 出入度获取

转换完成后直接调用networkx原生方法即可:

  • 获取全图所有节点入度:nx_graph.in_degree()
  • 获取全图所有节点出度:nx_graph.out_degree()
  • 获取单个指定节点的入度:nx_graph.in_degree(你的节点ID)

轻量替代方案(无需转换图结构)

如果你只需要统计出入度,不想额外引入networkx的转换开销,可直接基于pyvis的edges属性统计:

from collections import defaultdict

# 统计入度
in_degree = defaultdict(int)
for edge in pyvis_graph.edges:
    in_degree[edge["to"]] += 1

# 统计出度
out_degree = defaultdict(int)
for edge in pyvis_graph.edges:
    out_degree[edge["from"]] += 1

两种方案可根据你的后续需求选择:如果后续还需要做最短路径、社区发现等复杂图分析,选择转networkx的方案;如果仅需要统计出入度,直接统计的方案更轻量。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:18:03