Python 为什么plt.tight_layout()无法压缩上一个嵌套饼图的布局?

Python 为什么plt.tight_layout()无法压缩上一个嵌套饼图的布局?,python,matplotlib,Python,Matplotlib,有人能帮我解释一下为什么plt.tight\u layout无法压缩最后一张嵌套饼图的布局吗 plt.tight_layout()已应用于除最后一个图形之外的所有图形。在我看来很奇怪,plt.show()可以显示每个图形,但是.tight\u layout()不能显示每个图形 代码如下: def all_pie_nested(): 你想要多少数字?一个还是多个?如果有,为什么要多次调用子地块?如果是多个,您可能更希望专门为循环中的每个图形调用tight_layout(): fig.tight_l

有人能帮我解释一下为什么
plt.tight\u layout
无法压缩最后一张嵌套饼图的布局吗

plt.tight_layout()
已应用于除最后一个图形之外的所有图形。在我看来很奇怪,
plt.show()
可以显示每个图形,但是
.tight\u layout()
不能显示每个图形

代码如下:

def all_pie_nested():


你想要多少数字?一个还是多个?如果有,为什么要多次调用子地块?如果是多个,您可能更希望专门为循环中的每个图形调用tight_layout():

fig.tight_layout()

如下图所示:图3和图5来自同一代码,但它们不同:

我尝试在每个循环中调用
plt.tight_layout()
,并将
figure.autolayout rcParam
下的
True
设置为
a:
中的I,它们都不能使figure_5具有与 图3

分模线

目前唯一的解决方案是将
size
0.4
设置为
0.3
,并将
plt.rcParams['figure.autolayout']=True
设置在'for i in a:

希望以后有人能解释它的机理。


当您调用plt.tight_layout()时,我认为它的结果仅应用于当前图形(您创建的最后一个图形或您修改的最后一个图形),因此为什么不调整所有图形。:)thx。再说一遍<代码>plt.tight_layout()已应用于除最后一个图形外的所有图形。在我看来很奇怪,
plt.show()
可以显示每个图形,但是
.tight\u layout()
不能显示每个图形。
fig.tight_layout()
for i2 in a:
    if i2 != i1 and i2 != i:
    fig, ax = plt.subplots()

    data2 = df.groupby([i, i1, i2])['income'].sum()

    data0.plot.pie(ax=ax, radius=1-size, autopct='%.1f%%', wedgeprops=dict(width=size, edgecolor='w'))
    data1.plot.pie(ax=ax, radius=1, autopct='%.1f%%', wedgeprops=dict(width=size, edgecolor='w'))
    data2.plot.pie(ax=ax, radius=1+size, autopct='%.1f%%', wedgeprops=dict(width=size, edgecolor='w'))
    ax.set(aspect=1)
def all_pie_nested():

    plt.rcParams['figure.autolayout'] = True # replace call plt.tight_layout()

    for i in a:
        fig, ax = plt.subplots()    

        data0 = df.groupby(i)['income'].sum()
        data0.plot.pie(autopct='%.1f%%')
        ax.set(aspect=1)
        for i1 in a:
            if i1 != i:
                size = 0.3           # change from size = 0.4

                fig, ax = plt.subplots()

                data1 = df.groupby([i, i1])['income'].sum()
                data0.plot.pie(ax=ax, radius=1 - size, autopct='%.1f%%', wedgeprops=dict(width=size, edgecolor='w'))
                data1.plot.pie(ax=ax, radius=1, autopct='%.1f%%', wedgeprops=dict(width=size, edgecolor='w'))
                ax.set(aspect=1)

                for i2 in a:
                    if i2 != i1 and i2 != i:
                        fig, ax = plt.subplots()

                        data2 = df.groupby([i, i1, i2])['income'].sum()
                        data0.plot.pie(ax=ax, radius=1-size, autopct='%.1f%%', wedgeprops=dict(width=size, edgecolor='w'))
                        data1.plot.pie(ax=ax, radius=1, autopct='%.1f%%', wedgeprops=dict(width=size, edgecolor='w'))
                        data2.plot.pie(ax=ax, radius=1+size, autopct='%.1f%%', wedgeprops=dict(width=size, edgecolor='w'))
                        ax.set(aspect=1)
        plt.show()