循环创建热图图时出现内存问题

问题描述

我正在尝试循环创建60ish热图png文件

import matplotlib.pyplot as plt
from matplotlib import font_manager
import seaborn as sns
import pandas as pd
import gcenter code here

for d in df1,df2,df3,.....df65:   
   dfa=d.filter(regex='volume')
   
   cha=f'product{i}'

   #Row total
   dfa['V']=dfa.sum(axis=1)

   #Convert to %
   for i in range(0,12,1):
      dfa.iloc[:,i]=dfa.iloc[:,i] / dfa.iloc[:,-1]

   #Data to be ploted
   flight=dfa[dfa.columns[:12]]

   #Set title font
   fontP=font_manager.FontProperties()
   fontP.set_family('SimHei')

   f,ax = plt.subplots(figsize=(16,9))
   sns.heatmap(flight,robust=True,ax=ax,center=0.1,cmap="coolwarm")
   plt.title(f'{cha}({product})',FontProperties=fontP)
   plt.ylabel("Time")

   #Export
   f.savefig(f'C:/project/{cha}.png',dpi=400)

   #Clean up
   plt.clf()
   plt.close(f)
   gc.collect()

所以基本上,在This thread之后,我一起尝试了plt.clf(),plt.close(f)和gc.collect(),但是仍然出现以下错误

   File "C:\project\cnc\liquidity pattern.py",line 57,in <module>
   f.savefig(f'C:/project/cnc/figures/{cha}.png',dpi=400)

   File "c:\p\lib\site-packages\matplotlib\figure.py",line 2203,in savefig
   self.canvas.print_figure(fname,**kwargs)

   File "c:\p\lib\site-packages\matplotlib\backend_bases.py",line 2098,in print_figure
   result = print_method(

   File "c:\p\lib\site-packages\matplotlib\backends\backend_agg.py",line 514,in print_png
   figureCanvasAgg.draw(self)

   File "c:\p\lib\site-packages\matplotlib\backends\backend_agg.py",line 388,in draw
   self.renderer = self.get_renderer(cleared=True)

   File "c:\p\lib\site-packages\matplotlib\backends\backend_agg.py",line 404,in get_renderer
   self.renderer = RendererAgg(w,h,self.figure.dpi)

   File "c:\p\lib\site-packages\matplotlib\backends\backend_agg.py",line 92,in __init__
   self._renderer = _RendererAgg(int(width),int(height),dpi)

   MemoryError: In RendererAgg: Out of memory

我设法创建了65个无循环的png图形,但我仍然很想知道这里出了什么问题。任何帮助将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)