问题是,首先使用labels=subgroup_names分配图例,然后使用plt.legend(subgroup_names_legs,loc='best')重新分配它们。所以你重写了现有的值,因此破坏了顺序,这就是为什么你看到不匹配的颜色。在
为了避免图例框与图形重叠,可以将其位置指定为loc=(0.9, 0.1)
要从外部饼图中删除图例,可以获取图例句柄和标签,然后排除前三个条目,这样就只有内部饼图的图例# First Ring (outside)
fig, ax = plt.subplots()
ax.axis('equal')
mypie, _ = ax.pie(group_size, radius=1.3, labels=group_names, colors=
[a(0.6), b(0.6), c(0.6)] )
plt.setp( mypie, width=0.3, edgecolor='white')
# Second Ring (Inside)
mypie2, _ = ax.pie(subgroup_size, radius=1.3-0.3,
labels=subgroup_names, labeldistance=0.7, colors=[a(0.5), a(0.4),
a(0.3), b(0.5), b(0.4), c(0.6), c(0.5), c(0.4), c(0.3), c(0.2)])
plt.setp( mypie2, width=0.4, edgecolor='white')
plt.margins(0,0)
plt.legend(loc=(0.9, 0.1))
handles, labels = ax.get_legend_handles_labels()
ax.legend(handles[3:], subgroup_names_legs, loc=(0.9, 0.1))
plt.show()