我試圖在代碼循環中打印一系列圖像。我最終需要打印大約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