我试图在代码循环中打印一系列图像。我最终需要打印大约1000张以显示我的系统随时间变化的方式。我已经回顾了Matplotlib runs out of memory when plotting in a loop中概述的方法,但我仍然无法让代码生成超过96张图片。在循环中绘制数字时的Python内存
我正在使用它的剥出的形式的代码是下面
import numpy as np
import matplotlib as mpl
import os
def pltHM(graphname,graphtext,xAxis,yAxis,xMn,xMx,xCnt,yMn,yMx,yCnt,TCrt):
plt = mpl.pyplot
fig = plt.figure(figsize=(8,7), dpi=250)
cmap = mpl.cm.jet
norm = mpl.colors.Normalize(vmin=-3, vmax=3)
X = np.linspace(xMn,xMx,xCnt)
Y = np.linspace(yMn,yMx,yCnt)
plt.xlabel(xAxis)
plt.ylabel(yAxis)
plt.pcolormesh(X,Y,TCrt, cmap=cmap,norm=norm)
plt.grid(color='w')
plt.suptitle(graphtext, fontsize=14)
plt.colorbar()
plt.savefig(graphname, transparent = True)
plt.cla()
plt.clf()
plt.close(fig)
del plt
del fig
return
这在一个简单的循环使用如下所示
for loop1 in range(0,10):
for loop2 in range(0,100):
saveName = 'Test_Images/' + str(loop1) + '_' + str(loop2) + '.png'
plotHeatMap(saveName,'Test','X','Y',-35,35,141,-30,30,121,Z)
上为什么上面没有释放内存任何意见并导致追溯消息
RuntimeError:无法为映像分配内存
非常感谢您提供的任何帮助
提示:您不必在循环中创建新图形。将图形*一次*,然后在循环内*更新*绘图并保存。此外,您每次都重新定义pyplot。 **不要这样做**你只需要一次,只需'在顶部输入matplotlib.pyplot as plt',并摆脱'plt = mpl.pyplot'有趣的业务。 – Ajean
非常感谢。我现在已经把它解开了,并且在画布上使用了病态人士的建议。工作中。非常感谢 – ultimatejo