Matplot中重叠的子图

时间:2019-03-17 15:42:59

标签: python matplotlib

我想做的是在每行中显示3个图像(列)作为子图,这些图像正在显示,但彼此重叠。我尝试过手动调整它们,但是子图中的行数取决于“ n”值,因此无法对每n个手动调整。我尝试了“ fig.tight_layout()”,但徒劳。

关于如何克服这一点的任何想法?

    coeffs=coeffs[1:][::-1]

for i,v in enumerate(coeffs,1):
    toWork=[v[0], v[1], v[2]]
    for j,a in enumerate(toWork):
        ax = fig.add_subplot(i, 3, j+1)
        ax.imshow(a, interpolation="nearest", cmap=plt.cm.gray)
        ax.set_title(titles[j]+str(i), fontsize=10)
        ax.set_xticks([])
        ax.set_yticks([])
        # fig.tight_layout()
# plt.subplots_adjust(top=1,bottom=0,left=0.10,right=0.95,hspace=0.1,wspace=100)
plt.subplot_tool()
plt.show()

2 个答案:

答案 0 :(得分:0)

根据您的描述,这还不是很清楚。请提供一个minimal an verifiable example。但是,从您的代码来看,您正在使用i变量创建不同数量的行,我认为这不是故意的。从docs我们可以看到子图的工作方式

enter image description here

import matplotlib.pyplot as plt
fig = plt.figure()
nrows, ncols = 3, 3 # total of 9 plots
for idx in range(9):
    ax = fig.add_subplot(nrows, ncols, idx + 1)
    ax.text(0.5, 0.5, idx)
fig.show()

因此,我们预定义了列和行的数量,然后索引到我们要使用的正确子图。我认为您正在做的是在同一图形上重新定义子图,从而导致重叠。

答案 1 :(得分:0)

您可以尝试plt.tight_layout()这将使您的身材变得扁平并使人物变得整齐。