将一系列子图保存在一个唯一的图中

问题描述 投票:2回答:1

我目前正在以以下方式用for循环连续绘制3个子图:

for i in range(3):  
    fig, (ax1, ax2, ax3 , ax4) = plt.subplots(figsize=(20, 5), ncols=4)



    ax1.set_title('test 1')
    ax1.imshow(test_1)
    ax2.set_title('test 2')
    ax2.imshow(test_2[i])
    ax3.set_title('test 3')
    ax3.imshow(test_3[i])
    ax4.set_title('test 4')
    ax4.imshow(test_4[i])

    plt.show()

[当前正在并排绘制三个带有3个图像的子图,其中test_1始终是同一图形(因为它没有任何索引),而其他3个图像却改变了。

[我想要的是相同的情节,但是在一个独特的面板中,所以技术上要有4(列)x 3(行)

也许由子图构成的图的想法不正确。任何建议都将非常有帮助。谢谢!

python for-loop matplotlib subplot imshow
1个回答
0
投票

我已经解决了这个问题,并且有效:

plt.figure(figsize=(20,15))
num_cols = 4
num_class = 3
for i in range(num_class):

    plt.subplot(num_class,num_cols,i*num_cols+1)
    plt.imshow(test_1)
    plt.subplot(num_class,num_cols,i*num_cols+2)
    plt.imshow(test_2[i])
    plt.subplot(num_class,num_cols,i*num_cols+3)
    plt.imshow(test_3[i])
    plt.subplot(num_class,num_cols,i*num_cols+4)
    plt.imshow(test_4[i])

plt.tight_layout()  
plt.savefig("prova", dpi = 600)

并且在一张图像中给了我正确的输出

© www.soinside.com 2019 - 2024. All rights reserved.