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()