为什么matplotlib要花这么长时间来策划?

2024-06-29 01:10:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我在读第二本文件.txt,每行大约有50000行,我将数据保存在某个列表中,并尝试稍后绘图,但绘图未加载。你知道吗

这是我的密码

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()

为什么要花这么长时间?我怎样才能解决这个问题?你知道吗

附言:这不是重复,因为我的问题是关于我的情节正在采取的时间,而不是因为情节是错误的。你知道吗


Tags: intxt绘图foraswithpltopen
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()

你忘了把字符串转换成数字。打印字符串时,每个字符串在轴上都有自己的文本标签。这使得渲染时间很长。你知道吗

要么yeqt.append(float(y))(与yv相同),要么使用任何可用的自动转换工具,如pandas.read_csvnumpy.loadtxt。你知道吗

相关问题 更多 >