scipy:savefig无边框、坐标轴,只保存内容。

13 浏览
0 Comments

scipy:savefig无边框、坐标轴,只保存内容。

在numpy/scipy中,我有一张存储在数组中的图像。我可以显示它,我想使用savefig保存它,而没有任何边框、轴、标签、标题等。只有纯粹的图像,没有其他任何东西。\n我想避免使用像PyPNGscipy.misc.imsave这样的包,它们有时会有问题(它们并不总是安装得好),只需基本的savefig()对我来说就足够了。

0
0 Comments

Scipy: savefig without frames, axes, only content

在使用matplotlib进行图形绘制时,有时我们只想保存图形的内容,而不包括边框和坐标轴等元素。然而,直接使用plt.savefig()保存图像会默认保存整个图形,包括边框和坐标轴。本文将介绍这个问题的出现原因以及解决方法。

问题出现的原因:

在默认情况下,使用plt.savefig()保存图形时,会将整个图形保存为一个矩形区域,包括边框和坐标轴。这就导致了保存的图像中包含了不需要的元素,影响了图像的美观度。

解决方法:

要实现只保存图形内容而不包括边框和坐标轴,可以使用get_window_extent()函数获取图形内容所在的边界框(bbox),并通过设置bbox_inches参数来保存指定区域的图像。

具体的解决方法如下所示:

import numpy as np
import matplotlib.pyplot as plt
# 创建数据
data = np.arange(9).reshape((3,3))
# 创建图形和子图
fig = plt.figure()
ax = fig.add_subplot(1,1,1)
# 关闭坐标轴显示
plt.axis('off')
# 绘制图像
plt.imshow(data)
# 获取图像内容所在的边界框,并设置bbox_inches参数
extent = ax.get_window_extent().transformed(fig.dpi_scale_trans.inverted())
plt.savefig('/tmp/test.png', bbox_inches=extent)

通过以上代码,我们可以只保存图像内容而不包括边框和坐标轴。

这个解决方法是从Stack Overflow上的一个答案中学到的,原答案链接为:here

除了上述方法,还有其他一些建议,比如使用plt.axis('off')关闭坐标轴显示。然而,这些方法并不是非常有效,无法完全解决问题。

如果以上方法仍然存在小白边的问题,可以尝试使用如下代码来解决:

plt.savefig('/temp/test.png', bbox_inches='tight', transparent=True, pad_inches=0)

这段代码将通过设置bbox_inches为'tight'参数来自动调整边界框,将图像内容完全包含在内,并设置transparent=True参数来将边界框以外的区域设置为透明,最后通过设置pad_inches=0参数来消除边界框周围的空白区域。

希望本文对你了解如何在保存图像时只包括内容而不包括边框和坐标轴有所帮助。

0
0 Comments

问题的原因是保存图像时,保存了图像的边框和坐标轴,而不仅仅保存图像的内容。解决方法是使用matplotlib的imshow函数显示图像,并使用plt.axis('off')关闭坐标轴显示。然后使用fig.savefig函数保存图像,并设置bbox_inches='tight'和pad_inches=0来去除边框和空白区域。如果出现边框的问题,可以手动设置图像的大小和边界框来解决。在新版本的Matplotlib中,添加transparent=True参数可以解决边界问题。如果仍然出现坐标轴和刻度标记等问题,可以结合使用plt.axis('off')和其他方法来解决。

0
0 Comments

问题:如何使用matplotlib的savefig函数保存图片时去掉边框和坐标轴,只保留内容?

解决方法如下:

1. 首先创建一个无边框的figure对象:

fig = plt.figure(frameon=False)
fig.set_size_inches(w,h)

2. 创建一个填充整个figure的axes对象:

ax = plt.Axes(fig, [0., 0., 1., 1.])
ax.set_axis_off()
fig.add_axes(ax)

3. 在axes上绘制图像:

ax.imshow(your_image, aspect='auto')
fig.savefig(fname, dpi)

其中,aspect参数用于调整像素大小以确保填充在fig.set_size_inches指定的figure大小上。可以参考matplotlib的文档,特别是关于Axes、Axis和Artist的部分。

但是上述解决方法可能会在图片周围产生一个小的透明边框。可以通过修改参数来解决这个问题,例如在fig.set_size_inches中手动设置w和h参数,以及在fig.savefig中设置dpi参数,使得最终图片的大小为24x24像素。

另外,为了确保白色边框消失,还需要将axes对象的set_visible属性设置为False。

,要实现无边框和坐标轴,只保留图片内容的效果,需要创建无边框的figure对象,然后创建填充整个figure的axes对象,最后在axes上绘制图像并保存即可。

0