Python以精确的像素大小保存matplotlib图形

Posted

技术标签:

【中文标题】Python以精确的像素大小保存matplotlib图形【英文标题】:Python save matplotlib figure with exact pixel size 【发布时间】:2015-04-14 00:08:29 【问题描述】:

我想保存一个以像素为单位的精确大小的 matplotlib 图形。在下面的代码中,这个确切的大小是 500x500 像素。 虽然保存的图像是 500x500 像素,但它包括我的形状和绘图区域周围的填充。我希望圆圈紧贴边界。相反,我的圈子周围有空白。是否可以只保存绘图区域? 请注意,虽然下面的代码是可重现的,但 my_dpi 取决于您的显示器 DPI。 220 是我显示器的 DPI。

import matplotlib.pyplot as plt
import matplotlib.image as mpimage
import numpy as np

H       = 500
W       = 500
radius  = H/2
my_dpi  = 220


a = np.deg2rad(0)
b = np.deg2rad(360);

t = np.linspace(a,b,100)
x = radius*np.cos(t)
y = radius*np.sin(t)
x = np.append(x,[0,x[0]])
y = np.append(y,[0,y[0]])

myFig   = plt.figure()
DPI     = my_dpi #myFig.get_dpi()
myFig.set_size_inches(float(H)/float(DPI),float(W)/float(DPI))

plt.fill(y,x,color='none',facecolor='red')
plt.axis((-W/2,W/2,-H/2,H/2))
plt.axis('off')
#plt.show()
plt.savefig('my_fig.png',dpi=DPI)

print 'Figure Size: ', myFig.get_size_inches()

Im = mpimage.imread('my_fig.png')
print 'Im Size: ', Im.shape

【问题讨论】:

Specifying and saving a figure with exact size in pixels的可能重复 【参考方案1】:

您可以使用 subplots_adjust 设置绘图周围的填充。

myFig.subplots_adjust(bottom=0.,left=0.,right=1.,top=1.)

【讨论】:

这解决了我在使用bbox_inches='tight' 隐藏坐标区时出现额外空白的问题。

以上是关于Python以精确的像素大小保存matplotlib图形的主要内容,如果未能解决你的问题,请参考以下文章

如何为使用 python 保存的 tiff 图像设置像素大小,以便将像素高度和宽度设置为 ImageJ 中的特定值?

UIButton 中像素精确的 UIImage 重采样

python如何固定图片像素的大小

从桌面到移动的画布图像不同大小(以像素为单位)

在matplot Python中格式化日期时间

Unity像素艺术多个精灵没有正确切割