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

Python从CSV边列表创建Graph对象并绘图的新手求助

Python读取边列表CSV并创建图的完整步骤

作为Python新手,处理这类图数据确实会有点懵,我一步步带你搞定从读取文件到绘图的全流程!

1. 先安装必要的库

我们需要两个工具库:networkx用来处理图结构,matplotlib用来绘图。打开终端/命令提示符,运行下面的命令安装:

pip install networkx matplotlib

2. 读取CSV边列表并创建Graph对象

你的CSV文件里每行是一条边,格式是带双引号的两个节点(比如"YDR143C","YER068W"),这里有两种方法,推荐第一种更简单的:

方法一:用networkx自带的读取函数(推荐)

networkx专门提供了读取边列表的方法,能直接解析你的CSV格式:

import networkx as nx
import matplotlib.pyplot as plt

# 读取CSV文件,创建Graph对象
# delimiter指定节点分隔符是逗号,quotechar指定包裹节点的双引号
G = nx.read_edgelist("你的文件名.csv", delimiter=",", quotechar='"')

# 可以打印一下图的基本信息,验证是否读取成功
print(f"图中有 {G.number_of_nodes()} 个节点,{G.number_of_edges()} 条边")

方法二:手动读取CSV(适合理解底层逻辑)

如果你想搞清楚每一步的细节,可以用Python内置的csv模块手动读取并添加边:

import csv
import networkx as nx
import matplotlib.pyplot as plt

# 初始化一个空的无向图
G = nx.Graph()

# 打开CSV文件逐行读取
with open("你的文件名.csv", 'r', encoding='utf-8') as f:
    # 指定分隔符和引号字符,确保正确解析节点
    reader = csv.reader(f, delimiter=',', quotechar='"')
    for row in reader:
        # 确保每行有且只有两个节点(避免空行或格式错误)
        if len(row) == 2:
            node1, node2 = row
            G.add_edge(node1, node2)

# 验证读取结果
print(f"图中有 {G.number_of_nodes()} 个节点,{G.number_of_edges()} 条边")

3. 绘制图

读取完数据创建好Graph对象后,就可以用matplotlib绘图了:

# 设置绘图样式:显示节点标签,节点设为浅蓝色,标签加粗,放大节点尺寸
nx.draw(G, with_labels=True, node_color='lightblue', font_weight='bold', node_size=1500)

# 显示图形
plt.show()

几个新手注意事项

  • 确保你的CSV文件名和路径正确,如果文件不在Python脚本的同一目录下,要写完整的绝对路径(比如"C:/Users/xxx/Documents/edges.csv")
  • 如果CSV里有空行,方法二里的if len(row) == 2会自动跳过,避免报错
  • 如果节点名有特殊字符,quotechar='"')参数能保证正确解析,不用担心引号干扰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:17:53