我正在读取两个files.txt,每个文件有大约50,000行,并且我将数据保存在某个列表中并尝试稍后绘图,但是该绘图未加载。
这是我的代码
xeqt = []
yeqt = []
xv = []
yv = []
with open('graficoEQT.txt') as f:
for i in f:
i = i.strip()
x,y = i.split(" ")
xeqt.append(round(float(x),3))
yeqt.append(y)
with open('ErroValidacao1.txt') as f:
for i in f:
i = i.strip()
x,y = i.split(" ")
xv.append(round(float(x),3))
yv.append(y)
plt.plot(yeqt, xeqt, color = 'blue')
plt.plot(yv, xv, color='red')
plt.show()
为什么要花这么长时间?我该怎么解决?
PS:这不是重复的,因为我的问题是关于我的情节拍摄的时间,而不是因为情节错了。
答案 0 :(得分:2)
问题似乎不在于绘图,而是使用for循环读取文件,然后分割每一行。相反,您可以使用NumPy中的loadtxt
将值读入两个变量。
重要,plt.plot
将逐行连接所有数据点。原则上,这可能是长时间使用的原因之一。您可以尝试使用scatter
图。
您没有共享数据,所以我无法测试速度。不过,您应该尝试以下操作
import numpy as np
import matplotlib.pyplot as plt
xeqt, yeqt = np.loadtxt('graficoEQT.txt', unpack=True)
xeqt = np.round(xeqt, 3)
xv, yv = np.loadtxt('ErroValidacao1.txt', unpack=True)
xv = np.round(xv, 3)
plt.scatter(yeqt, xeqt, color = 'blue')
plt.scatter(yv, xv, color='red')
plt.show()
答案 1 :(得分:2)
您忘了将字符串转换为数字。绘制字符串时,每个字符串在轴上都会有其自己的文本标签。这需要很长的渲染时间。
yeqt.append(float(y))
(与yv
相同),或者您使用任何可自动进行转换的工具,例如pandas.read_csv
或numpy.loadtxt
。