我正在使用Seaborn、Pandas和Python运行一个循环来提取数据和绘制图形。我只想将每个图形保存为图形文件并关闭它们,但是我无法弄清楚如何实现。
/usr/local/lib/python3.6/dist-packages/seaborn/axisgrid.py:311: RuntimeWarning: 已打开20多个图形。通过pyplot接口(matplotlib.pyplot.figure
)创建的图形会一直保留,直到显式关闭,并可能消耗大量内存。(要控制此警告,请参见rcParam figure.max_open_warning
)。
我本以为g.close()可以解决问题,但我得到了错误消息:AttributeError: 'FacetGrid' 对象没有 'close' 属性
for o in options:
s = "SELECT * from options_yahoo where contract_name = '" + o + "'
SQL_Query = pd.read_sql_query(s, conn)
df = pd.DataFrame(SQL_Query)
g = sns.relplot( kind="line", data=df[['bid','ask','lastprice']])
g.savefig( o+ ".png")
g.close()
我希望能够有一种更高效的解决方案,不会占用太多内存并产生警告错误。非常感谢您提供一些最佳实践。
g.fig.close()
。 - busybearg.fig.close()
会导致AttributeError: 'Figure' object has no attribute 'close'
。请改为使用plt.close(g.fig)
,详见我的下方回答。 - Johan