有人可以帮助我,为什么plt.tight_layout
无法收紧最后一个nest_pie图表的布局吗?
plt.tight_layout()
已应用于除最后一个图形之外的所有图形。在我看来,plt.show()
可以显示每个数字,但.tight_layout()
不能显示所有人,这很奇怪。
代码在这里:
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()
答案 0 :(得分:1)
您想要多少个数字?一个或多个?如果是,为什么要多次调用子图?如果是多个,则您可能希望专门为循环内的每个图形调用ight_layout():
fig.tight_layout()
答案 1 :(得分:0)
就像下面的图片一样: Figure_3 和 Figure_5 来自同一代码,但是它们是不同的:
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
下的True
设置为for i in a:
,但他们俩都无法制作 Figure_5 具有与
Figure_3 。
.....................分型线....................................
目前唯一的提议是将size
中的0.3
设置为0.4
,并将a中的i之前的plt.rcParams['figure.autolayout'] = True
设置为:
希望有人可以稍后解释其机理。
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()