matplotlib 将子图组合成一个没有轴和间隙的图
matplotlib combining subplots into a single plot with no axis and no gaps
我有一张看起来像这样的图片:
它是使用 matplotlib 生成的:
for slice_idx in range(mandrill_t.highpasses[1].shape[2]):
print(slice_idx)
subplot(2, 3, slice_idx+1)
imshow(np.abs(mandrill_t.highpasses[1][:,:,slice_idx]), cmap='Spectral', clim=(0, 1))
但是,对于我的用例,我希望所有这 6 张图像都在没有间隙或轴的单个图像中 - 我没有要显示的示例输出图像,但基本上,我希望它们水平堆叠(其中 3 个)和垂直方向(其中 2 个),这样 6 个图像就是一个图像。
我试着四处寻找类似的问题以从中汲取灵感,但到目前为止没有运气:(
任何指点都很好。
就是这样 GridSpec
is for (see plt.subplots
docs):
只需在开头添加以下行:
subplots(2, 3, gridspec_kw={"wspace": 0, "hspace": 0})
您可能还必须将一些情节元素设置为不可见,但如果没有 MCVE 就很难确定到底是哪个元素。
您必须指定网格参数:
- 2 行
- 3 列
- 0 宽度space
- 0 身高space
fig, axes = plt.subplots(nrows = 2, ncols = 3, gridspec_kw = {'wspace': 0, 'hspace': 0})
然后你可以遍历创建的轴,对于它们中的每一个,你必须首先显示图像并将轴设置为 'tight'
,其次设置为 'off'
:
for ax in axes.flatten():
ax.imshow(img)
ax.axis('tight')
ax.axis('off')
您的代码会略有不同,因为您要为每个 ax
.
绘制不同的图像
完整代码
import matplotlib.pyplot as plt
img = plt.imread('img.jpeg')
fig, axes = plt.subplots(nrows = 2, ncols = 3, gridspec_kw = {'wspace': 0, 'hspace': 0})
for ax in axes.flatten():
ax.imshow(img)
ax.axis('tight')
ax.axis('off')
plt.show()
我有一张看起来像这样的图片:
它是使用 matplotlib 生成的:
for slice_idx in range(mandrill_t.highpasses[1].shape[2]):
print(slice_idx)
subplot(2, 3, slice_idx+1)
imshow(np.abs(mandrill_t.highpasses[1][:,:,slice_idx]), cmap='Spectral', clim=(0, 1))
但是,对于我的用例,我希望所有这 6 张图像都在没有间隙或轴的单个图像中 - 我没有要显示的示例输出图像,但基本上,我希望它们水平堆叠(其中 3 个)和垂直方向(其中 2 个),这样 6 个图像就是一个图像。
我试着四处寻找类似的问题以从中汲取灵感,但到目前为止没有运气:(
任何指点都很好。
就是这样 GridSpec
is for (see plt.subplots
docs):
只需在开头添加以下行:
subplots(2, 3, gridspec_kw={"wspace": 0, "hspace": 0})
您可能还必须将一些情节元素设置为不可见,但如果没有 MCVE 就很难确定到底是哪个元素。
您必须指定网格参数:
- 2 行
- 3 列
- 0 宽度space
- 0 身高space
fig, axes = plt.subplots(nrows = 2, ncols = 3, gridspec_kw = {'wspace': 0, 'hspace': 0})
然后你可以遍历创建的轴,对于它们中的每一个,你必须首先显示图像并将轴设置为 'tight'
,其次设置为 'off'
:
for ax in axes.flatten():
ax.imshow(img)
ax.axis('tight')
ax.axis('off')
您的代码会略有不同,因为您要为每个 ax
.
完整代码
import matplotlib.pyplot as plt
img = plt.imread('img.jpeg')
fig, axes = plt.subplots(nrows = 2, ncols = 3, gridspec_kw = {'wspace': 0, 'hspace': 0})
for ax in axes.flatten():
ax.imshow(img)
ax.axis('tight')
ax.axis('off')
plt.show()