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) 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() 上图是在对饼图的模块颜色、标签、百分比、标题、角度、圆形半径,以及某一块凸出(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,4] vals2 = [2,4,5] fig,ax = plt.subplots() labels = 'A','D' ax.pie(vals1,radius=1.2) ax.pie(vals2,radius=1) ax.set(aspect="equal",title='Pie plot with `ax.pie`') plt.show() 初战告捷!令我信心大增! (3) 但是,可以看到上面的那个图形还有点粗糙,还可以加入百分比、color等等,进一步设置: vals1 = [1,radius=1.2,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() 为方便,在这里没有对颜色、角度进行参数设置,后期若大家有兴趣,可以进一步加入不同参数再次设置。在这里主要说明的是: 1、图中各饼块的百分比数据,也在各自饼图中对pctdistance(百分比离圆形距离)进行不同设置,以便区分开,这里边也经过多次尝试; 2、对于各饼块颜色代表的数据系列标签,采用图例的方式plt.legend(),放在右边,不然饼图中展示的文本内容过多,会影响图形效果; 3、legend()的图例的位置可以通过关键字参数 loc 指定,bbox_to_anchor 关键字可让用户手动控制图例布局。 例如,如果你希望轴域图例位于图像的右上角而不是轴域的边角,则只需指定角的位置以及该位置的坐标系。 (4) 进一步地,在双层饼图的基础上,我又在想:可不可以绘制双层环形图。 在这里也就是转换一下思路:在两个饼图里边再加个小圆形图,并设置成白色背景。经过尝试,结果也如我所愿: vals1 = [1,5] vals3=[1] fig,pctdistance=0.75) ax.pie(vals3,radius=0.6,colors='w') ax.set(aspect="equal",bbox_to_anchor=(1,borderaxespad=0.) plt.show() 其原理为:绘制三个嵌套饼图,其中最里边的饼图,设置半径较小,整个饼图只有一个变量,因此不会分割,同时将背景色设置成白色colors='w',如此,大功告成! 实际上,还可以进一步延伸,绘制多层饼图、多层环形图,其原理都是绘制半径不同的pie,并设置不同的参数。 总结 以上就是本文关于Python通过matplotlib画双层饼图及环形图简单示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |