为什么 matplotlib 中的图例在 `savefig()` 之后没有自行清除?

Dar*_*enW 4 python matplotlib legend python-3.6

我正在交互地使用 Python 3.6。如果我将下面的代码从文本文件粘贴到 Python 命令行中,它可以连续多次正常工作。然而,当注释掉show()并启用该pp.savefig(...)行时,每次我粘贴整个代码块时,图例都会重复“abc”几次。到底是怎么回事?有没有办法清除图例,以便每次都重新开始?

import matplotlib.pyplot as pp

pp.title("Szekeres Polynomials")
pp.legend([]) # clears the legend? no!
pp.plot([1,2,3], [8,5,4], '-', label='xxxabc' )
pp.legend(loc='best', shadow=True )
#pp.show()
pp.savefig('TMPxxx.eps', format='eps', dpi=600)
Run Code Online (Sandbox Code Playgroud)

小智 6

在这种情况下,您应该close在保存新图形之前绘制对象,以避免附加信息:

import matplotlib.pyplot as pp

pp.title("Szekeres Polynomials")
pp.legend([]) # clears the legend? no.
pp.plot([1,2,3], [8,5,4], '-', label='xxxabc' )
pp.legend(loc='best', shadow=True )
#pp.show()
pp.savefig('TMPxxx.eps', format='eps', dpi=600)

# Close last plot object 
plt.close()
Run Code Online (Sandbox Code Playgroud)

参考:

https://matplotlib.org/api/_as_gen/matplotlib.pyplot.close.html