将Matplotlib调整格式后的图形同时保存为PDF和PNG

将Matplotlib调整格式后的图形同时保存为PDF和PNG

引言

看似简单的操作,执行起来却遇到了很多问题,用savefig()保存时,不小心就保存了空白图形,还可能保存的图形格式错乱,有时还会报错。后来发现跟语句顺序关系很大。
我所使用的平台是VSCode,Python版本为3.6.0,Matplotlib版本为3.2.1
本文参考了解决使用 plt.savefig 保存图片时一片空白

保存PNG时的操作

matplotlib.pyplot.show()后调用matplotlib.pyplot.savefig('文件名.png')会保存空白图形。需要先保存,后显示。

matplotlib.pyplot.savefig('文件名.png') 
matplotlib.pyplot.show()

但先保存后显示会导致保存的图形没有了之前用figManager所做的图形格式调整,保存的图形格式是错乱的。

figManager = matplotlib.pyplot.get_current_fig_manager()
figManager.resize(*figManager.window.maxsize())
matplotlib.pyplot.subplots_adjust(left=0.05, right=0.99, top=0.9, bottom=0.08, wspace=0, hspace=0.4)

需要先获取当前图形,再显示,最后保存。

fig = matplotlib.pyplot.gcf()
fig.show()                                
fig.savefig('文件名.png')

保存PDF时的操作

保存PDF也会有同样问题,操作思路是一样的,先获取当前图形,再显示,最后保存,但具体代码又有所不同。显示代码不能用fig.show(),而是matplotlib.pyplot.show(),不然保存后的pdf中图形格式会乱。

fig = matplotlib.pyplot.gcf()
matplotlib.pyplot.show()                                
fig.savefig('文件名.pdf')

同样,如果保存png过程中,显示语句调用matplotlib.pyplot.show()也不行,会报错,必须用fig.show()
总结一下就是保存修改了显示格式的图形时,需要先获取当前图形,再显示图形,最后保存。保存PNG时用fig.show()显示,保存PDF时用matplotlib.pyplot.show()显示图形,二者不能混用。

同时保存PNG和PDF时的操作

需要依次调用fig.show()matplotlib.pyplot.show(),调用顺序不能颠倒,每次调用显示函数后要立即保存为相应格式,不然会报错。以下代码语句顺序不能作任何调整。

fig = matplotlib.pyplot.gcf()
fig.show()                               
fig.savefig('文件名.png')
matplotlib.pyplot.show()                 
fig.savefig('文件名.pdf')

以下是我写的一个绘图文件,欢迎参考
https://github.com/dxbwar/covid19_TS1

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值