问题是,首先使用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()