在 matplotlib 中绘制太多行:内存不足

2024-01-05

我需要在单个图中绘制 ~2000x300 线。 例如类似的东西,但有 300 条曲线(每条 2000 个数据点),而不是此处显示的 4 条:示例图 https://i.stack.imgur.com/J7rvw.png

首先我设置了图:

fig, ax = plt.subplots(figsize=(8, 8))

然后我多次执行以下操作:

drawnLine = plt.Line2D([Xstart, Xfinish], [Ystart,Yfinish], 1, linestyle='solid', color='b')
ax.add_artist(drawnLine)

最后我想做:

fig.savefig(ExpFolder + 'NewFig.png')

然而,该脚本达到 8GB 内存限制并停止。


是的,matplotlib 并不是世界上最节省内存的库。

现在,确实有 600,000 个细分is如果你用纯粹的天真的软件绘图来完成很多工作,那么,嗯,不酷。

我建议您放弃 matplotlib 的 canvas 方法:

  • 考虑固定的图像大小(以像素为单位),并将线条直接渲染到该画布上。您可以对显示的图像使用一些技巧来做到这一点matplotlib's imagesc和配偶,但实际上,那时你并没有让你的生活变得更轻松。因此,选择任何允许您将像素绘制到位图上的 python 库。有一些。
  • 考虑一些不尝试在软件中绘制 600,000 条线的东西 - 我正在考虑简单地直接与您的图形硬件对话。
  • 只需使用一些东西less比 matplotlib 效率低。我喜欢pyqtgraph.

pyqtgraph例子:

import pyqtgraph as pg
from PyQt4.QtGui import QApplication
import numpy
N=20
x = numpy.random.poisson(lam=0.01, size=(N,2000))
y = numpy.random.normal(size=(N,2000))
p = pg.plot()
for x_,y_ in zip(x,y):
    p.addItem(pg.PlotDataItem(x_,y_))
QApplication.instance().exec_()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 matplotlib 中绘制太多行:内存不足 的相关文章

随机推荐