如何解决嵌套饼图 - 第三层上的颜色重叠
尝试在饼图的多个图层中创建饼图,但是颜色在第二个环之后开始混乱,即我的颜色由于某种原因在第三层重叠。
不想对颜色进行硬编码,因为每个环的这些子类别可以包含 20 多个
这是我正在使用的代码
plot_title = 'Breakdown'
abc = data.pivot_table(index=['Language','Channel','Sub Channel'],\
values='Count',aggfunc='count',fill_value=0).reset_index()
b1 = abc.groupby(by='Language')['Count'].sum().reset_index()
b1_values = b1['Count']
b1_name = b1['Language']
b2 = abc.groupby(by=['Language','Channel'])['Count'].sum().reset_index()
b2_values = b2['Count']
b2_name = b2['Channel']
b3 = abc.groupby(by=['Language','Sub Channel'])['Count'].sum().reset_index()
b3_values = b3['Count']
b3_name = b3['Sub Channel']
# Make data: I have 3 groups,2 subgroups and 3 sub subgroups
group_names=b1_name
group_size=b1_values
subgroup_names1=b2_name
subgroup_size1=b2_values
subgroup_names2=b3_name
subgroup_size2=b3_values
# Define colors
cmap1 = plt.cm.Reds
cmap2 = plt.cm.Blues
cmap3 = plt.cm.Greens
# Create colors
outer_colors = [cmap1(.7),cmap2(.7),cmap3(.7)]
# First Ring (outside)
fig,ax = plt.subplots()
mypie,_,_ = ax.pie(group_size,radius = 1.5,colors=outer_colors,\
autopct=lambda p : '{:.f}%\n({:,.0f})'.format(p,p * sum(chart_data)/100),pctdistance = 0.85)
plt.legend(b1_name,loc='best',bbox_to_anchor=(1,0.,0.5,1))
# Second Ring (Inside)
inner_colors = [*cmap1(np.linspace(0.5,0.1,b2_name.nunique())),*cmap2(np.linspace(0.5,*cmap3(np.linspace(0.5,b2_name.nunique()))]
mypie2,_ = ax.pie(subgroup_size1,radius=1,labeldistance=0.7,colors=inner_colors,\
autopct=lambda p : '{:.1f}% ({:,pctdistance = 0.6)
# Third Ring (Inside)
inner_colors1 = [*cmap1(np.linspace(0.3,b3_name.nunique())),*cmap2(np.linspace(0.3,*cmap3(np.linspace(0.3,b3_name.nunique()))]
mypie3,_= ax.pie(subgroup_size2,radius=0.5,colors=inner_colors1)
#autopct=lambda p : '{:.1f}% ({:,pctdistance = 0.3)
plt.title(plot_title,y=1.1)
plt.tight_layout()
plt.savefig(destination1+plot_title+'.png')
Output from the above codedata
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。