使用 Matplotlib 绘图时图形重叠

Figures overlapping when plotting using Matplotlib

我有一个包含多个图像的绘图。有 20 行和 3 列。在每一行中,第一列应该是原始图像,第二列应该是掩码,第三列应该是使用神经网络获得的分割。

我尝试使用以下代码。可以正确绘制 2 行。从第 3 行开始图像与第 1 行重叠。

f = plt.figure()
for j in range(3):
    pred_y = y_pred[j]
    pred_y = pred_y.reshape(256, 256)
    pred_y = (pred_y > 0.1).astype(np.uint8)
    f.add_subplot(j + 1, 3, 1 )
    plt.imshow(X_test[j, :, :])

    f.add_subplot(j + 1, 3, 2)
    plt.imshow(y_test[j])
    
    f.add_subplot(j + 1, 3, 3)
    plt.imshow(pred_y)
plt.show()

得到的输出是,

Figure.add_subplot 的参数是 num_rowsnum_colsn,而不是 rownum_rowscol .因此,您将以 1x3、2x3、3x3 的排列方式制作顶行图。像这样拨打 add_subplot

f.add_subplot(20, 3, 3 * j + 1)
f.add_subplot(20, 3, 3 * j + 2)
f.add_subplot(20, 3, 3 * j + 1)

生成轴的更好方法可能是 plt.subplots, as suggested in the demo:

fig, ax = plt.subplots(20, 3, constrained_layout=True)
for i in range(20):
    ax[i, 0].imshow(X_test[i])
    ax[i, 1].imshow(y_test[j])
    ax[i, 2].imshow((pred_y[j].reshape(256, 256) > 0.1).astype(np.uint8))