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.