解决plt.savefig()和plt.show()方法得到的图片不一样问题
作者:HealthScience
这篇文章主要介绍了解决plt.savefig()和plt.show()方法得到的图片不一样问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
plt.savefig()和plt.show()方法得到的图片不一样
遇到了一个问题,在循环中,plt.savefig()和plt.show()方法得到的图片不一样,差别很大
在最后一行加入 plt.clf() 就可以了
原始代码:
for pro in properties: plt.savefig("images/{}.pdf".format(pro))
正确方式:
for pro in properties: plt.savefig("images/{}.pdf".format(pro)) plt.clf()
因为如果还需要在同一个脚本中继续使用 plt 对象绘制图像,需要在保存完图像后再次调用 plt.clf() 函数清空图形对象,以免影响后续绘图。
否则,如果不加入这一行,只会循环中的第一次循环plt.savefig()和plt.show()方法得到的图片一样。剩余的循环都不不一样
matplotlib绘图之savefig与show的冲突
先展示matplotlib绘的图,再进行保存
示例代码1:
import matplotlib.pyplot as plt x = [1,2,3,4,5] y = [1,2,3,4,5] plt.plot(x,y) plt.show() plt.savefig('test.png') # 注意:plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。
运行完代码之后保存在test.png的图片为:
为什么出现这种情况呢?
注意:plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。
所以保存图片的操作必须在展示图片之前
先保存matplotlib绘的图,再进行展示
示例代码2:
import matplotlib.pyplot as plt x = [1,2,3,4,5] y = [1,2,3,4,5] plt.plot(x,y) plt.savefig('test.png') plt.show() # 注意:plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。
此时运行完代码之后保存在test.png的图片为:
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。