去除水平方向子图之间的分隔
Remove separation between subplots in horizontal direction
我有四个二维数组,我想使用 imshow 在四个子图中绘制。我希望删除这些子图之间的分隔,使子图相互接触,类似于 Matplotlib Documentation(倒数第二个示例)。我的尝试是
fig, axs = plt.subplots(2, 2, sharex='col', sharey='row', gridspec_kw={'hspace': 0, 'wspace': 0})
(ax1, ax2), (ax3, ax4) = axs
ax1.imshow(im1)
ax2.imshow(im2)
ax3.imshow(im3)
ax4.imshow(im4)
for ax in fig.get_axes():
ax.label_outer()
plt.show()
这会产生
垂直方向的分隔似乎被正确移除了,但我仍然有水平方向的分隔。有谁知道我在这里也可以摆脱它吗?
您可以按照 answer of ImportanceOfBeingErnest 的思路进行尝试。我已经为您的问题准备了以下基于它的伪代码。您可以尝试一下,看看它是否适合您。
from matplotlib import gridspec
nrow, ncol = 2, 2
fig = plt.figure(figsize=(6,6))
gs = gridspec.GridSpec(nrow, ncol,
wspace=0.0, hspace=0.0,
top=1.-0.5/(nrow+1), bottom=0.5/(nrow+1),
left=0.5/(ncol+1), right=1-0.5/(ncol+1))
ims = [im1, im2, im3, im4]
c = 0 # Counter for the ims array
for i in range(nrow):
for j in range(ncol):
ax= plt.subplot(gs[i,j])
ax.imshow(ims[c])
ax.set_xticklabels([])
ax.set_yticklabels([])
c += 1
for ax in fig.get_axes():
ax.label_outer()
我有四个二维数组,我想使用 imshow 在四个子图中绘制。我希望删除这些子图之间的分隔,使子图相互接触,类似于 Matplotlib Documentation(倒数第二个示例)。我的尝试是
fig, axs = plt.subplots(2, 2, sharex='col', sharey='row', gridspec_kw={'hspace': 0, 'wspace': 0})
(ax1, ax2), (ax3, ax4) = axs
ax1.imshow(im1)
ax2.imshow(im2)
ax3.imshow(im3)
ax4.imshow(im4)
for ax in fig.get_axes():
ax.label_outer()
plt.show()
这会产生
垂直方向的分隔似乎被正确移除了,但我仍然有水平方向的分隔。有谁知道我在这里也可以摆脱它吗?
您可以按照
from matplotlib import gridspec
nrow, ncol = 2, 2
fig = plt.figure(figsize=(6,6))
gs = gridspec.GridSpec(nrow, ncol,
wspace=0.0, hspace=0.0,
top=1.-0.5/(nrow+1), bottom=0.5/(nrow+1),
left=0.5/(ncol+1), right=1-0.5/(ncol+1))
ims = [im1, im2, im3, im4]
c = 0 # Counter for the ims array
for i in range(nrow):
for j in range(ncol):
ax= plt.subplot(gs[i,j])
ax.imshow(ims[c])
ax.set_xticklabels([])
ax.set_yticklabels([])
c += 1
for ax in fig.get_axes():
ax.label_outer()