如何使用Pandas Series中存储的(x,y)坐标序列绘制折线图?
问题根因
你当前的df['curves']是Pandas Series结构,每个元素对应一条独立曲线的(x,y)坐标列表,此前的方案直接对整个Series做转置/解包操作,相当于把多条曲线的坐标混合处理,因此无法得到正确结果。
可行解决方案
1. 绘制单条曲线
以绘制id=1对应的曲线为例:
# 取出单条曲线的坐标列表 single_curve = df.loc[df['id'] == 1, 'curves'].iloc[0] # 拆分x、y坐标序列 x, y = zip(*single_curve) # 绘图 plt.plot(x, y) plt.show()
2. 绘制所有曲线到同一张画布
for curve_points in df['curves']: # 逐行处理每条曲线的坐标 x, y = zip(*curve_points) plt.plot(x, y) # 可自行添加坐标轴标注、图例、标题等配置 plt.show()
常见踩坑补充
如果从数据库读取的curves字段实际是字符串格式的列表(例如值为"[(1,2),(3,4)]"而非Python原生列表),需要先做格式转换再执行上述绘图操作:
import ast df['curves'] = df['curves'].apply(ast.literal_eval)
此前方案报错说明
你用第二种方案时报not enough values to unpack错误,是因为np.array(data)转换后得到的是一维数组,每个元素是一条曲线的坐标列表,转置后仍为一维结构,无法拆分出x、y两个独立数组。
内容的提问来源于stack exchange,提问作者Cesc
相关产品推荐
相关产品推荐

