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

使用NetworkX绘制层级图(Hierarchical graph)无果,寻求解决方案

使用NetworkX绘制层级图解决方案

1. 数据预处理

假设你的数据是每行包含一组层级关联的节点集合,先将其转换为边列表格式。模拟示例数据如下:

# 模拟你的行式关联数据
data = [
    ["层级1节点1", "层级2节点1", "层级3节点1"],
    ["层级1节点1", "层级2节点2", "层级3节点2"],
    ["层级1节点2", "层级2节点3", "层级3节点3"]
]

2. 构建有向层级图

层级图为有向结构,使用NetworkX的DiGraph创建:

import networkx as nx

G = nx.DiGraph()

# 遍历每行数据,为相邻节点添加层级边
for row in data:
    for i in range(len(row)-1):
        G.add_edge(row[i], row[i+1])

3. 实现层级布局

NetworkX原生无层级布局,推荐调用Graphviz的dot布局实现精准层级效果(需先安装Graphviz软件和pygraphviz库):

import matplotlib.pyplot as plt

# 安装依赖:先安装Graphviz软件,再执行 pip install pygraphviz
pos = nx.nx_agraph.graphviz_layout(G, prog="dot")

# 绘制图形
nx.draw_networkx_nodes(G, pos, node_size=1500, node_color="#61a5c2")
nx.draw_networkx_edges(G, pos, arrows=True, arrowstyle="->", arrowsize=20)
nx.draw_networkx_labels(G, pos, font_size=10, font_weight="bold")

plt.axis("off")
plt.show()

4. 自定义层级布局(无需Graphviz)

如果无法安装Graphviz,可通过给节点标记层级属性,手动实现布局:

# 为每个节点添加层级标识
for row in data:
    for level, node in enumerate(row):
        G.nodes[node]["level"] = level

def hierarchical_layout(G):
    pos = {}
    level_groups = {}
    # 按层级分组节点
    for node, attrs in G.nodes(data=True):
        level = attrs["level"]
        level_groups.setdefault(level, []).append(node)
    # 分配坐标:y轴区分层级,x轴均匀分布同层级节点
    y_interval = 2
    for level in sorted(level_groups.keys()):
        nodes = level_groups[level]
        x_interval = 2 / (len(nodes) + 1)
        for idx, node in enumerate(nodes):
            pos[node] = (x_interval * (idx + 1), -level * y_interval)
    return pos

# 使用自定义布局绘图
pos = hierarchical_layout(G)
nx.draw(G, pos, with_labels=True, node_size=1500, node_color="#61a5c2", arrows=True)
plt.axis("off")
plt.show()

问题排查

  • 若pygraphviz安装失败,可优先尝试自定义布局方案。
  • 确保边的方向符合层级逻辑,若方向错误,反转row[i]和row[i+1]的顺序即可。
  • 若存在重复节点,需先通过G.nodes()去重或调整数据结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 06:03:15