python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > plt.savefig()和plt.show()方法得到的图片不一样

解决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的图片为:

图片有内容

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文