1

I am trying to create 60ish heatmap png files in a loop.

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()

So basically, following This thread I have tried plt.clf(), plt.close(f) and gc.collect() all together, but I still get the following errors.

   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

I have managed to create 65 png figures without loop, but I am still keen to know what is wrong here. Any help would be much appreicated.

NOnaMe
  • 27
  • 5

0 Answers0