【问题标题】:Why is matplotlib taking so long to plot? [duplicate]为什么 matplotlib 需要这么长时间才能绘制? [复制]
【发布时间】:2019-09-15 10:51:41
【问题描述】:

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

【问题讨论】:

  • 这是因为您正在逐行读取文件。尝试使用,例如numpy.loadtxt,或pandas.read_csv(sep='\s');此外,您可以稀疏化您的数组,例如yv = numpy.array(yv)[::3], xv = numpy.array(xv)[::3].
  • 谢谢,我用 pandas 阅读,它的工作。
  • @LarissaTeixeira:如果您注释掉绘图线,我们的代码是否仍然需要类似的时间?如果是,那么读取文件是罪魁祸首。在这种情况下,请尝试使用我的答案loadtxt,如果您能加快速度,请告诉我
  • @Sheldore 我评论了情节线并且阅读文件非常快。但是当我尝试绘制时,它不起作用。我用熊猫阅读了文件,它可以工作。我无法解释为什么。

标签: python matplotlib plot


【解决方案1】:

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

【讨论】:

  • @PeterWood:完成,在上面的 cmets 中。谢谢
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-13
    • 1970-01-01
    • 1970-01-01
    • 2012-04-29
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    相关资源
    最近更新 更多