Python Matplotlib 中如何用 plt.savefig 存储图片

文章介绍了如何使用matplotlib.pyplot的savefig函数保存高清图像,包括参数解释和示例,强调了savefig需在plt.show()之后调用以避免空白图像。同时,讨论了可能导致保存空白图像的Bug,如渲染、覆盖、图形关闭和透明度设置问题,并提出了相应的解决策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

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()之前,如果代码仍然产生空白图像,可能有几个原因:

  1. 缺少必要的渲染步骤: 在某些情况下,Matplotlib可能需要明确的渲染步骤才能正确地保存图形
    =》可以尝试在保存之前调用plt.draw()来确保图形已经渲染。

  2. 图形被覆盖或重叠: 有时候,图形可能会被其他元素覆盖或重叠,导致保存的图像为空白。这可能是由于设置了错误的坐标轴范围或覆盖了图形的其他元素所致
    =》可以尝试调整坐标轴范围或将图形的元素移动到合适的位置。

  3. 未正确关闭图形: 如果在保存图形之前没有关闭当前的图形窗口,可能会导致保存的图像为空白
    =》可以尝试在保存之前调用plt.close()来关闭当前的图形窗口。

  4. 透明度设置问题: 在plt.savefig()中设置了transparent=True,这可能导致保存的图像为空白,特别是当图形中没有任何透明元素时
    =》可以尝试将transparent参数设置为False,并查看是否有所改善

以上Bug是泛泛而谈,详细的Bug排查需要一步步探底

05-27
`savefig` 是 Matplotlib 库中的一个函数,用于将当前图形保存为指定格式的图像文件。该函数的语法如下: ```python matplotlib.pyplot.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`:保存图像的文件名或文件路径。支持多种格式,如 PNG、PDF、SVG 等。 - `dpi`:图像的分辨率,即每英寸的像素数。默认值为 100。 - `facecolor`:图像的背景色。默认值为白色('w')。 - `edgecolor`:图像边框的颜色。默认值为白色('w')。 - `orientation`:图像的方向,可以是 'landscape'(横向)或 'portrait'(纵向)。默认值为 'portrait'。 - `papertype`:图像的纸张类型。默认值为 None。 - `format`:图像的格式。如果未指定,将从文件名的扩展名中自动推断出格式。如果无法推断,则默认为 PNG 格式。 - `transparent`:是否将图像背景设为透明。默认值为 False。 - `bbox_inches`:指定图像的边界框。默认值为 None,表示使用所有子图的边界框。 - `pad_inches`:指定图像与边界框之间的留白大小。默认值为 0.1 英寸。 - `frameon`:是否绘制图像边框。默认值为 None,表示继承 Matplotlib 的默认设置。 - `metadata`:图像的元数据,如作者、标题、主题等。默认值为 None。 使用 `savefig` 函数可以方便地保存 Matplotlib 绘制的图像,以便进行后续的处理或分享。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农研究僧

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值