博客
关于我
Python Matplotlib 中如何用 plt.savefig 存储图片
阅读量:798 次
发布时间:2023-03-06

本文共 1458 字,大约阅读时间需要 4 分钟。

前言

plt.show()展示图片时,截图保存可能不够清晰,如何保存高清图也是一大知识点。

函数包名为:

import matplotlib.pyplot as plt

1. 基本知识

主要功能:保存绘制数据后创建的图形。使用此方法可以将创建的图形保存。

函数源码:

savefig(fname, dpi=None, facecolor=’w’, edgecolor=’w’, orientation=’portrait’, papertype=None, format=None, transparent=False, bbox_inches=None, pad_inches=0.1, frameon=None, metadata=None)

参数解释:

参数 描述
fname 指定格式图片或者指定文件位置
dpi 画质
facecolor 和 edgecolor 默认为白色
Orientation 横向或者纵向
papertype 纸张类型
format 如png、pdf
transparent 图片背景透明
bbox_inches 图表多余的空白区去除
pad_inches 保存图形周围填充

正常保存:plt.savefig("xx.png"),也可以svg的格式进行保存。

保存的时候需要plt.show()在plt.savefig()之后,顺序颠倒会出现图片为空白。

当前文件保存:

注意事项:

  • 如果plt.show() 在plt.savefig()前,就会导致保存图片是空白的情况。
  • window的路径读取,需要反斜杠

要把所有的参数用上,可以用在直方图上:

import matplotlib.pyplot as plt  x = [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]  plt.hist(x)  plt.savefig("squares1.png", bbox_inches="tight", pad_inches=1, transparent=True, facecolor="g", edgecolor='w', orientation='landscape')  plt.show()

2. Bug彩蛋

在使用Matplotlib保存图片时,确保在调用plt.show()之前进行保存是一个常见的做法,因为plt.show()会清除当前的图形。但是,即使将plt.savefig()放在plt.show()之前,如果代码仍然产生空白图像,可能有几个原因:
  • 缺少必要的渲染步骤:在某些情况下,Matplotlib可能需要明确的渲染步骤才能正确地保存图形。可以尝试在保存之前调用plt.draw()来确保图形已经渲染。
  • 图形被覆盖或重叠:有时候,图形可能会被其他元素覆盖或重叠,导致保存的图像为空白。这可能是由于设置了错误的坐标轴范围或覆盖了图形的其他元素所致。可以尝试调整坐标轴范围或将图形的元素移动到合适的位置。
  • 未正确关闭图形:如果在保存图形之前没有关闭当前的图形窗口,可能会导致保存的图像为空白。可以尝试在保存之前调用plt.close()来关闭当前的图形窗口。
  • 透明度设置问题:在plt.savefig()中设置了transparent=True,可能导致保存的图像为空白,特别是当图形中没有任何透明元素时。可以尝试将transparent参数设置为False,并查看是否有所改善。
  • 以上Bug是泛泛而谈,详细的Bug排查需要一步步探底。

    转载地址:http://uoafk.baihongyu.com/

    你可能感兴趣的文章
    python hashlib模块
    查看>>
    python if,循环的练习
    查看>>
    Python in open course (week3)
    查看>>
    Python IO编程
    查看>>
    Python IO编程详解
    查看>>
    Python IPL
    查看>>
    python join split
    查看>>
    python json文件传输图片
    查看>>
    python kivy AttributeError:‘super‘对象没有属性‘__getattr__‘
    查看>>
    Python Kivy ListView:如何删除选定的 ListItemButton?
    查看>>
    Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll
    查看>>
    Python Kivy库:跨平台应用开发
    查看>>
    python lambda表达式
    查看>>
    Python ldap3 代码从 SID 获取用户名
    查看>>
    Python list += iterable 的行为是否记录在任何地方?
    查看>>
    python list,str的拼接与转换
    查看>>
    python list函数使用总结_史上最全的Python数据结构:列表和元组用法总结
    查看>>
    python locust 性能测试:locust参数-保证并发测试数据唯一性,循环取数据
    查看>>
    python locust 性能测试:locust安装和一些参数介绍
    查看>>
    python log
    查看>>