python绘制饼图双层_Python通过matplotlib画双层饼图及环形图简单示例

(1)

饼图(pie),即在一个圆圈内分成几块,显示不同数据系列的占比大小,这也是我们在日常数据的图形展示中最常用的图形之一。

在python中常用matplotlib的pie来绘制,基本命令如下所示(python3.X版本):

vals = [1, 2, 3, 4]#创建数据系列

fig, ax = plt.subplots()#创建子图

labels = 'A', 'B', 'C', 'D'

colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']explode = (0, 0.1, 0, 0)

ax.pie(vals, explode=explode, labels=labels, colors=colors,

autopct='%1.1f%%', shadow=True, startangle=90,radius=1.2)

ax.set(aspect="equal", title='Pie plot with `ax.pie`')#设置标题以及图形的对称

plt.show()

20200624073615729.jpg

上图是在对饼图的模块颜色、标签、百分比、标题、角度、圆形半径,以及某一块凸出(explode)进行设置后,最终呈现的图形效果。大部分设置来自于pie()函数内,即:

pie(x, explode=None, labels=None, colors=None, autopct=None, pctdistance=0.6,

shadow=False, labeldistance=1.1, startangle=None, radius=None)

对于该函数内各参数的含义,网上资料比比皆是,在这里不再赘述,大家可以根据自己需求来多次尝试,设置美化图形。

(2)

目前matplotlib中尚无双层饼图绘制的专门介绍,但是,我们注意到pie()函数中有个饼图半径的设置——radius,于是,我就想:可不可以在同一个figure下绘制两个不同的圆饼,形成嵌套饼图,从而制作出双层饼图?比如:

作图如下:

vals1 = [1, 2, 3, 4]vals2 = [2, 3, 4, 5]fig, ax = plt.subplots()

labels = 'A', 'B', 'C', 'D'

ax.pie(vals1, radius=1.2)

ax.pie(vals2, radius=1)

ax.set(aspect="equal", title='Pie plot with `ax.pie`')

plt.show()

20200624073615730.jpg

初战告捷!令我信心大增!

因此,在matplotlib下绘制双层饼图的方法可以总结为:基于不同的数据系列,分别设计两个饼图,嵌套在一起,对每个饼图的pie()函数内参数radius进行设置,就可以得到双层饼图。

(3)

但是,可以看到上面的那个图形还有点粗糙,还可以加入百分比、color等等,进一步设置:

vals1 = [1, 2, 3, 4]vals2 = [2, 3, 4, 5]fig, ax = plt.subplots()

labels = 'A', 'B', 'C', 'D'

ax.pie(vals1, radius=1.2,autopct='%1.1f%%',pctdistance=0.9)

ax.pie(vals2, radius=1,autopct='%1.2f%%',pctdistance=0.5)

ax.set(aspect="equal", title='Pie plot with `ax.pie`')

#plt.legend()

plt.legend(labels,bbox_to_anchor=(1.05, 1), loc='best', borderaxespad=0.)

plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值