删除连续图形中的白边距



我特别要求在运行图中执行此操作,因为plt.savefig('blaa.png', bbox_inches='tight')的解决方案与我无关。我不想保存这个数字,我想让它在没有任何边际的情况下运行。我的图是这样创建的:

mpl.rcParams['toolbar'] = 'None'
fig = plt.figure()
ax = fig.add_subplot(111)
img = plt.imread('blaaa.jpg')
ax.imshow(img, extent=[-180, 180, -90, 90], aspect=1)
ax.set_axis_off()
plt.tight_layout(pad=0, h_pad=0, w_pad=0, rect=None)
plt.subplots_adjust(wspace=0, hspace=0)
plt.show()

这样做后,我仍然在左侧得到白色边距。有什么想法吗?

作为另一个答案的替代方法,您可以在调用subplots_adjust时使用不同的关键字:

请注意,wspacehspace是子图之间的空间,因此不要在此处执行任何操作,您需要left=right=

mpl.rcParams['toolbar'] = 'None'
fig = plt.figure()
ax = fig.add_subplot(111)
img = plt.imread('blaaa.jpg')
ax.imshow(img, extent=[-180, 180, -90, 90], aspect=1)
ax.set_axis_off()
plt.subplots_adjust(left=0, right=1)
plt.show()

如果您希望图像跨越整个图形,则可以在imshow()中使用aspect="auto",如果您想要一定的纵横比,这可能不适用于这种情况

您需要将轴位置设置为完整的边界框:

mpl.rcParams['toolbar'] = 'None'
fig = plt.figure()
ax = fig.add_subplot(111)
img = plt.imread('blaaa.jpg')
ax.imshow(img, extent=[-180, 180, -90, 90], aspect=1)
ax.set_axis_off()
plt.tight_layout(pad=0, h_pad=0, w_pad=0, rect=None)
plt.subplots_adjust(wspace=0, hspace=0)  # this shouldn't be needed afaik
ax.set_position([0, 0, 1, 1])
plt.show()

最新更新