matplotlib同时设置两个图例,分开显示

这里基本上,出现两个图例的话,需要调用两次 legend 。第一次调用,你需要将图例保存到一个变量中,然后保存下来。第二次调用清除之前创建的第一个的图例,之后你可以通过 Axes.add_artist 函数手动将第一个图例重新添加回来。是引用

一、使用嵌套饼图对比男女生体重指数进行比例统计,分为正常、低体重、超重、肥胖(男女生体重指数参考如下)
在这里插入图片描述

#男生BMI分组
bins = [min(bmi_1)-1,16.4,23.2,26.3,max(bmi_1)+1]
labels = ['低体重','正常','超重','肥胖']
aa= pd.cut(bmi_1, bins, right = False, labels= labels).value_counts(ascending = False)
#获取各组名称作为饼图标签
indexs = aa._stat_axis.values.tolist()
plt.figure(figsize = (5,8))
#画大饼图
patches,l_text,p_text = plt.pie(aa,
                                radius = 2,
                                colors = ['tomato', 'lightskyblue', 'goldenrod', 'green'],
                                autopct = '%0.1f%%',
                                pctdistance = 0.85,
                                wedgeprops=dict(linewidth=3,width=0.8,edgecolor='w'))
plt.title('男女生体重指数对比',pad =110,fontsize = 22)
#设置比例标签字号
for t in p_text:
    t.set_size(15)
#添加男生图例,并保存为"l1"
l1 = plt.legend(indexs,labels = indexs,bbox_to_anchor = (1.1,0.3,0.4,1),title ='男生指数')
#女生BMI分组
bins2 = [min(bmi_2)-1,16.4,22.7,25.2,max(bmi_2)+1]
aa2= pd.cut(bmi_2, bins2, right = False, labels= labels).value_counts(ascending = False)
#获取各组名称作为饼图标签
indexs2 = aa2._stat_axis.values.tolist()
#画小饼图
patches2,l_text2,p_text2 = plt.pie(aa2,
                                radius =1.2,
                                autopct = '%0.1f%%',
                                colors = ['gold', 'salmon', 'violet', 'teal'],
                                pctdistance = 0.7,
                                wedgeprops=dict(linewidth=3,width=0.7,edgecolor='w'))
l2 = plt.legend(patches2,indexs2,bbox_to_anchor = (1.38,0.3,0.4,1),title ='女生指数')
#重新显示男生图例
plt.gca().add_artist(l1)
#设置比例标签字号
for t in p_text2:
    t.set_size(15)

在这里插入图片描述

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值