前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matplotlib圆环图/饼图显示比值

matplotlib圆环图/饼图显示比值

作者头像
生信编程日常
发布2021-04-16 11:43:22
2.9K0
发布2021-04-16 11:43:22
举报

构建一个显示的数值的函数,将plt.pie中的autopct=该函数即可。

代码:

代码语言:javascript
复制
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
mpl.rcParams['font.size'] = 7.0 # matplotlib设置全局字体

# 创建两组数据
x1 = [30,25, 66, 13, 23]
x2 = [29, 28, 90, 19, 31]

x_0 = [1,0,0,0] #用于显示空心
 
labels = ["Intron","Intergenic","UTR","Exon","CDS"] # 标签
colors = ["#FFDD55","#EE7700","#99FF99","#5599FF","#FF77FF"] # 对应的颜色


# 用于设置legend的字体和大小
font1 = {'family' : 'Times New Roman',
'weight' : 'normal',
'size'   : 15,
        }
# 创建图片        
plt.figure(figsize=(20,20))
fig, ax = plt.subplots()

# 背景色
rect = fig.patch
rect.set_facecolor('white')

# 数值
def make_autopct(values):
    def my_autopct(pct):
        total = sum(values)
        val = int(round(pct*total/100.0))
        # 同时显示数值和占比的饼图
        return '{p:.2f}% ({v:d})'.format(p=pct,v=val)
    return my_autopct

#做出三个pie图,最后一个用作中间的空心
pie_1 = ax.pie(x1,startangle = 90,radius=1.8,pctdistance = 0.9,colors=colors,autopct=make_autopct(x1),textprops = {'fontsize':13, 'color':'k'})
pie_2 = ax.pie(x2,startangle = 90,radius=1.3,pctdistance = 0.9,colors=colors,autopct=make_autopct(x2),textprops = {'fontsize':13, 'color':'k'})
pie_0 = ax.pie(x_0, radius=0.8,colors = 'w')

# 设置图片标题
ax.text(0.1, 2.2, 'test', fontsize=24, style='oblique', ha='center',va='top',wrap=True)

# 画出每个pie图的边的颜色
for pie_wedge in pie_0[0][:1]:
    pie_wedge.set_edgecolor('gray')
for pie_wedge in pie_1[0]:
    pie_wedge.set_edgecolor('gray')
for pie_wedge in pie_2[0]:
    pie_wedge.set_edgecolor('gray')

# 设置legend的位置和字体
ax.legend(labels, bbox_to_anchor=(1.3,1.0), loc='center left', prop=font1)

fig.savefig('~/test.png',dpi=200,bbox_inches = 'tight',facecolor=fig.get_facecolor(), transparent=True)
# 将图设置为圆形
ax.set(aspect="equal")
plt.show()

生成图:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档