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

如何使用NetworkX读取CSV数据生成带箭头的工艺流程图?

NetworkX 读取CSV生成带箭头工艺流程图实现方案

1. 前置约定

首先明确你的CSV需至少包含两列:第一列为上游节点,第二列为下游节点,可新增第三列作为边的工序说明,示例CSV结构如下:

source,target,process
原料仓,破碎车间,皮带输送
破碎车间,磨矿车间,渣浆泵给料
磨矿车间,浮选车间,旋流分级
浮选车间,精矿库,压滤脱水

2. 完整实现代码

需先安装基础依赖:pip install networkx pandas matplotlib

import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt

# 读取本地CSV文件
df = pd.read_csv("你的CSV文件路径.csv")

# 初始化有向图:这是生成带箭头边的核心,不要使用无向Graph类
G = nx.DiGraph()

# 批量添加边,带工序属性
for _, row in df.iterrows():
    G.add_edge(row["source"], row["target"], process=row.get("process", ""))

# 选择布局,推荐dot层级布局,最符合工艺流程图的逻辑
> 注意:dot布局依赖graphviz引擎和pygraphviz库,Linux可先执行`sudo apt install graphviz libgraphviz-dev`,Windows可直接下载对应版本的pygraphviz whl包安装,不想额外安装依赖可以直接替换为NetworkX自带的spring_layout
pos = nx.nx_agraph.graphviz_layout(G, prog="dot")
# 无需额外依赖的备选布局
# pos = nx.spring_layout(G, k=2, iterations=150)

# 绘制节点
nx.draw_networkx_nodes(G, pos, node_size=3500, node_color="lightblue", edgecolors="black")
# 绘制节点文字标签
nx.draw_networkx_labels(G, pos, font_size=10, font_weight="bold")
# 绘制带箭头的边,调整箭头大小样式
nx.draw_networkx_edges(G, pos, edgelist=G.edges(), arrowstyle="->", arrowsize=25, edge_color="gray")
# 如需显示边的工序说明,打开下方两行代码
# edge_labels = nx.get_edge_attributes(G, "process")
# nx.draw_networkx_edge_labels(G, pos, edge_labels=edge_labels, font_size=8)

# 隐藏画布边框
plt.axis("off")
# 调整画布尺寸避免内容截断
plt.gcf().set_size_inches(12, 9)
# 保存或显示图片
plt.savefig("工艺流程图.png", dpi=300, bbox_inches="tight")
plt.show()

3. 效果调整方法

  • 节点顺序不符合预期:可手动给每个节点指定坐标,或在CSV中新增节点层级列,读取后按层级设置pos参数
  • 箭头方向不对:调整graphviz_layout的prog参数,dot为从上到下布局,fdp为从左到右布局,neato为自由分布布局
  • 节点重叠:调整spring_layout的k参数,数值越大节点间距越大

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:27:00