为什么 matplotlib 需要这么长时间来绘制



我正在读取两个文件.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:这不是重复的,因为我的问题是关于我的情节所花费的时间,而不是因为情节错误。

问题似乎不在于绘图,而在于使用 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()

你忘了把字符串转换成数字。绘制字符串时,每个字符串将在轴上获得自己的文本标签。这会使渲染时间很长。

要么yeqt.append(float(y))(yv相同(,要么使用任何自动执行转换的可用工具,例如 pandas.read_csvnumpy.loadtxt .

最新更新