如何利用CSV文件中的(x,y)坐标与边绘制NetworkX图?
使用CSV导入坐标与边数据绘制NetworkX图
前提假设
假设你的CSV数据分为两个文件:一个存储节点ID及对应的(x,y)坐标,另一个存储边的连接关系(源节点→目标节点)。下面是示例文件结构:
节点文件(nodes.csv)
id,x,y 1,0.0,0.0 2,2.0,0.0 3,1.0,2.0 4,3.0,2.0
边文件(edges.csv)
source,target 1,2 2,3 1,3 3,4
实现步骤
导入依赖库
先安装并导入所需的工具库:import networkx as nx import pandas as pd import matplotlib.pyplot as plt读取CSV数据
用Pandas读取两个CSV文件,转换成DataFrame方便处理:# 读取节点坐标 nodes_df = pd.read_csv("nodes.csv") # 读取边连接关系 edges_df = pd.read_csv("edges.csv")构建NetworkX图
创建图对象,依次添加节点(附带坐标属性)和边:# 创建无向图(如果需要有向图,替换为nx.DiGraph()) G = nx.Graph() # 遍历节点数据,添加节点并绑定坐标 for _, row in nodes_df.iterrows(): node_id = row["id"] G.add_node(node_id, pos=(row["x"], row["y"])) # 批量添加边 G.add_edges_from(edges_df[["source", "target"]].values)绘制并展示图形
提取节点坐标,设置绘图样式后显示:# 获取所有节点的位置信息 pos = nx.get_node_attributes(G, "pos") # 绘制节点、边和标签 nx.draw_networkx_nodes(G, pos, node_size=700, node_color="#87CEEB") nx.draw_networkx_edges(G, pos, width=2, edge_color="#808080") nx.draw_networkx_labels(G, pos, font_size=12, font_weight="bold") # 隐藏坐标轴,让图形更整洁 plt.axis("off") # 显示图形 plt.show()
特殊情况处理
如果你的节点和边数据在同一个CSV文件中,可以添加一个type列区分(比如type="node"或type="edge"),然后通过过滤提取对应数据:
df = pd.read_csv("combined.csv") nodes_df = df[df["type"] == "node"] edges_df = df[df["type"] == "edge"]
内容的提问来源于stack exchange,提问作者Vishnu M
相关产品推荐
相关产品推荐

