2 回答
TA贡献1824条经验 获得超8个赞
主要瓶颈似乎是调用,它为这 15k 点中的每一个autofmt_xdate()点添加了一个日期标签。发生这种情况是因为您的 x 标签实际上不是日期;而是日期。就 pyplot 而言,它们只是任意字符串,因此它不知道要保留哪些以及要丢弃哪些。y 标签也发生了类似的情况。
将 x 解析为datetime对象,将 y 解析为floats:
from datetime import datetime
...
x = [datetime.strptime(line.split('\t')[0], '%Y-%m-%d %H:%M:%S') for line in lines]
y = [float(line.split('\t')[1]) for line in lines]
现在,我在 x 轴上每小时获得一次刻度,在 y 轴上每 2.5 度获得一次刻度。渲染几乎是瞬时的。
在尝试绘制数据之前,您还应该考虑对数据进行下采样。无论如何,15000 点远远超出了典型计算机屏幕的水平分辨率。
TA贡献1877条经验 获得超6个赞
您可以使用pandas读取文件,这可能比循环内容更快。
(...)
def plot(self):
df = pd.read_csv('testdata.txt', sep='\t', header=None, parse_dates=[0])
(...)
# plot data
ax.plot(df[0], df[1], c='r', label='temperature')
添加回答
举报