前言
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排查需要一步步探底