为什么?紧凑型布局()上一个嵌套饼图的紧凑布局失败?

2024-09-20 22:53:19 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能帮我解释一下为什么plt.tight_layout未能压缩最后一个nest_饼图的布局?在

plt.tight_layout() has applied to every figure except last one. So strange it seems to me that plt.show() can show every figure, but .tight_layout() can not tight everyone.

代码在这里:

def all_pie_nested():

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.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.tight_layout()
    plt.show()

Tags: sizeplotpltaxwidthdictlayoutpie
2条回答

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

fig.tight_layout()

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

enter image description here

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.tight_layout(),并将figure.autolayout rcParam设置为for i in a:下的True,它们都不能使图5具有与 图3。在

分模线。。。。。。。。。。。。。。。。。。。。。。。。在

目前唯一的办法是将size0.4设置为0.3,并在``fori in a:

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

enter image description here

^{pr2}$

相关问题 更多 >

    热门问题