子图未对齐

时间:2019-10-23 01:38:42

标签: python matplotlib

我希望获得一些帮助来调整我的子图。我尝试了几种组合,但这些组合是我获得的最接近的组合。我只需要数字彼此靠近并且标题在行的左端即可。我这个容易完成的任务缺少什么?

此变体增加了不均匀的间距。

# Input
fig, axs = plt.subplots(1,10,figsize=(15,3), squeeze=False)
fig.subplots_adjust(hspace=0, wspace=0.1)
fig.suptitle('Input', x=0.1, y=0.6)
for i in range(1):
    for j in range(10):
        im = x_true_np[1,i*20+j]
        axs[i][j].imshow(im, cmap="gray")
        axs[i][j].axis('off')
# Ground Truth
fig, axs = plt.subplots(1,10,figsize=(15,3), squeeze=False)
fig.subplots_adjust(hspace=0, wspace=0.1)
fig.suptitle('Ground Truth', x=0.1, y=0.6)
for i in range(1):
    for j in range(0,10):
        im = x_true_np[1,i*20+j+10]
        axs[i][j].imshow(im, cmap="gray")
        axs[i][j].axis('off')
# Predictions
fig, axs = plt.subplots(1,10,figsize=(15,3), squeeze=False)
fig.subplots_adjust(hspace=0, wspace=0.1)
fig.suptitle('Predictions', x=0.1, y=0.6)
for i in range(1):
    for j in range(0,10):
        im = x_pred_np[1,i*20+j]
        axs[i][j].imshow(im, cmap="gray")
        axs[i][j].axis('off')

Android Architecture Blueprints v2

此变体忽略hspace参数,甚至不显示标题。

fig, axs = plt.subplots(3,10,figsize=(15,10), squeeze=False)
fig.subplots_adjust(hspace=0, wspace=0.1)
axs[0][0].set_ylabel("Input", fontsize=20)
for j in range(10):
    im = x_true_np[1,j]
    axs[0][j].imshow(im, cmap="gray")
    axs[0][j].axis('off')
axs[1][0].set_ylabel("Ground Truth", fontsize=20)
for j in range(10):
    im = x_true_np[1,10+j]
    axs[1][j].imshow(im, cmap="gray")
    axs[1][j].axis('off')
axs[2][0].set_ylabel("Ground Truth", fontsize=20)
for j in range(10):
    im = x_pred_np[1,j]
    axs[2][j].imshow(im, cmap="gray")
    axs[2][j].axis('off')    
fig.tight_layout() 

enter image description here

1 个答案:

答案 0 :(得分:0)

我最终使用了ImageGrid工具箱。如此简单。

from mpl_toolkits.axes_grid1 import ImageGrid

idxs = [6,7,8,9]

for idx in idxs:
    fig  = plt.figure(idx, (15, 10))
    grid = ImageGrid(fig, 111, nrows_ncols=(3, 10), axes_pad=0.1)
    for i in range(3):
        grid[0].set_ylabel("Input")
        grid[0].set_ylabel("Ground Truth")
        grid[0].set_ylabel("Prediction")
        for j in range(10):
            grid[j].imshow(x_true_np[idx,j], cmap="gray")
            grid[j+10].imshow(x_true_np[idx,j+10], cmap="gray")
            grid[j+20].imshow(x_pred_np[idx,j], cmap="gray")

enter image description here