如何从.csv文件生成正确散点图?Pyplot绘图结果异常求助
问题描述
我将CSV文件导入Excel后能生成与原始数据形态一致的正常图表,但使用SciPy结合Pyplot绘图时,生成的图表数据结构完全错误。
已通过以下代码成功解析CSV文件,数据按CSV中的顺序存入数组:
while True: line = infile.readline() if not line: break else: data = re.findall('[\d.]+', line) datax.append(data[0]) datay.append(data[1])
尝试多种绘图方式(plt.plot(datax, datay)、plt.scatter(datax, datay)、逐点绘制),得到的错误图表形态完全一致。打印datax和datay确认元素顺序与CSV文件一致,试过多种排序方法均无效果。
解决方案
核心问题是数据类型不匹配:re.findall提取的是字符串类型数据,Pyplot会将字符串类型的x轴数据视为离散类别而非连续数值,这直接导致了图表形态异常。
修复步骤
- 转换数据类型
将提取到的字符串转为浮点型(或整型,根据你的数据类型调整),修改代码中存入数组的部分:datax.append(float(data[0])) datay.append(float(data[1])) - 更高效的CSV读取方案(可选)
手动循环+正则读取CSV容易出错,推荐用专业库简化操作:- 使用pandas:
import pandas as pd df = pd.read_csv('你的CSV文件路径.csv') datax = df.iloc[:, 0].values datay = df.iloc[:, 1].values - 使用numpy:
import numpy as np data = np.genfromtxt('你的CSV文件路径.csv', delimiter=',') datax = data[:, 0] datay = data[:, 1]
- 使用pandas:
- 验证绘图
完成数据类型转换后,再执行plt.plot(datax, datay),即可得到与Excel一致的正常图表。
内容的提问来源于stack exchange,提问作者RebeccaJoy
相关产品推荐
相关产品推荐

