摘要:这篇Python开发技术栏目下的“Python通过matplotlib画双层饼图及环形图简单示例”,介绍的技术点是“matplotlib、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()

上图是在对饼图的模块颜色、标签、百分比、标题、角度、圆形半径,以及某一块凸出(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()

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

因此,在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()

为方便,在这里没有对颜色、角度进行参数设置,后期若大家有兴趣,可以进一步加入不同参数再次设置。在这里主要说明的是:

1、图中各饼块的百分比数据,也在各自饼图中对pctdistance(百分比离圆形距离)进行不同设置,以便区分开,这里边也经过多次尝试;

2、对于各饼块颜色代表的数据系列标签,采用图例的方式plt.legend(),放在右边,不然饼图中展示的文本内容过多,会影响图形效果;

3、legend()的图例的位置可以通过关键字参数 loc 指定,bbox_to_anchor 关键字可让用户手动控制图例布局。 例如,如果你希望轴域图例位于图像的右上角而不是轴域的边角,则只需指定角的位置以及该位置的坐标系。

(4)

进一步地,在双层饼图的基础上,我又在想:可不可以绘制双层环形图。

在这里也就是转换一下思路:在两个饼图里边再加个小圆形图,并设置成白色背景。经过尝试,结果也如我所愿:

vals1 = [1, 2, 3, 4]

vals2 = [2, 3, 4, 5]

vals3=[1]

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.1f%%',pctdistance=0.75)

ax.pie(vals3, radius=0.6,colors='w')

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

#plt.legend()

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

plt.show()

其原理为:绘制三个嵌套饼图,其中最里边的饼图,设置半径较小,整个饼图只有一个变量,因此不会分割,同时将背景色设置成白色colors='w',如此,大功告成!

实际上,还可以进一步延伸,绘制多层饼图、多层环形图,其原理都是绘制半径不同的pie,并设置不同的参数。

总结

以上就是本文关于Python通过matplotlib画双层饼图及环形图简单示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

python画环形图_Python通过matplotlib画双层饼图及环形图简单示例相关推荐

  1. python怎么画多重饼状图_Python通过matplotlib画双层饼图及环形图简单示例

    (1) 饼图(pie),即在一个圆圈内分成几块,显示不同数据系列的占比大小,这也是我们在日常数据的图形展示中最常用的图形之一. 在python中常用matplotlib的pie来绘制,基本命令如下所示 ...

  2. 用python画动图_Python使用matplotlib画动态图

    机器学习需要使用python实现相应的算法,因此学习了Matplotlib中的画图. 当然为了能显示机器学习中每次迭代的效果与收敛速度,需要画出动态图形. 下面给出两个例子,分别可以画出动态条形图和动 ...

  3. python做房源饼状图_python使用matplotlib画饼状图

    %matplotlib inlineimport matplotlib.pyplot as plt# 121 > 1行2列第1个fig1 = plt.subplot(121)plt.pie([1 ...

  4. python如何画动态海浪_python使用matplotlib画动态图

    matplotlib是python的核心绘图库,是python的一个开源项目,旨在为python提供一个绘图库. matplotlib matplotlib与numpy组合是一种可行的matlab替代 ...

  5. python使用matplotlib 画柱状图代码_Python 使用 matplotlib 画柱状图教程

    Python 使用 matplotlib 画图是非常方便的,之前的文章记录了<Python 使用 matplotlib 画折线图教程>,今天就再次记录一下使用 matplotlib 画柱状 ...

  6. python热图_python – 使用matplotlib中的3D数据生成热图

    我有一个函数returnValuesAtTime,它返回三个lists-x_vals,y_vals和swe_vals.所有三个列表具有相同的长度,并且swe_vals中的每个元素对应于来自x_vals ...

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

    (1) 饼图(pie),即在一个圆圈内分成几块,显示不同数据系列的占比大小,这也是我们在日常数据的图形展示中最常用的图形之一. 在python中常用matplotlib的pie来绘制,基本命令如下所示 ...

  8. python数据挖掘学习】十五.Matplotlib调用imshow()函数绘制热图

    python数据挖掘学习]十五.Matplotlib调用imshow()函数绘制热图 #2018-03-28 14:47:19 March Wednesday the 13 week, the 087 ...

  9. 数据可视化实验:python数据可视化-柱状图,条形图,直方图,饼图,棒图,散点图,气泡图,雷达图,箱线图,折线图

    数据可视化实验:python数据可视化 实验8-12:大数据可视化工具-python 目录 1柱状图 2条形图 3直方图 4饼图 5棒图 6散点图 7气泡图 8雷达图 9箱线图 10折线图 1柱状图 ...

最新文章

  1. 用word2007发布blog
  2. HTML5:一些部件
  3. boost::statechart模块自定义反应测试相关的测试程序
  4. 折半查找法(二分查找法)
  5. WinCE OAL中的OEMIoControl函数
  6. python可变对象与不可变对象_python 可变对象与不可变对象
  7. Mobile Lua 6.5 发布,MoSync 的 Lua 移植版本
  8. 朋友圈设置成昨天发的_如何让你的朋友圈骚到脱颖而出?
  9. IT项目失败的常见原因分析
  10. 《人机交互技术》第二章 感知和认知基础
  11. 实践论和矛盾论是任何人必修的一课
  12. shecodject生成免杀木马,一步过360、火绒
  13. linux安装Android Studio
  14. MATLAB---三维绘制函数实例介绍
  15. 与你分享如何做好企业汇算清缴
  16. VS2015编译时“ The POSIX name for this item is deprecated.”的分析
  17. 月嫂APP开发可以实现哪些功能?
  18. mysql删除重复记录语句
  19. 最新搜索引擎提交网站的入口及技巧
  20. Mysql只看这一篇就够啦

热门文章

  1. 最大值——科林明伦杯J题
  2. C语言按键控制喇叭,Windows环境下C语言控制你的PC喇叭(PC Speaker)编程
  3. Pytorch搭建Retinaface人脸检测与关键点定位平台
  4. VMware 12虚拟机下Ubuntu 16.04连不上网解决方法
  5. 教学资源库建设计算机专业,教学资源库建设下计算机专业论文
  6. 外链建设的主要门户渠道
  7. SSL 基础(zz)
  8. win7系统下解决VC6.0 与office2007、2010不兼容的问题
  9. c语言编写温度监测界面,QT和C++实现显示温度数据界面
  10. 计算机基础考试题附答案——《第贰篇》