嵌套饼图_你真的了解matplotlib吗?---环形图

环形图简介

环形图是饼图衍生出来的统计图形,可以看作是两个以上饼图的叠合。环形图与饼图类似,其实是有差别的。饼图是用圆形及圆内扇形的面积来表示数值大小的图形,主要用于表示总体中各组成部分所占的比例。与之对比,环形图中间留有空白,可以用多个环展示多个样本,既可以表示每个样本中各部分的占比,又可以对多个样本的结构同时进行对比。

文字表达永远没有图片来的直观,从网上随便搜了一个环形图先简单感受下:

aa0b5bc2b5a1ad570d2a43bff295e49f.png

绘制简单环形图

上边的环形图只有一个环,实际上可以根据需要绘制多个环嵌套在一起的环形图,并且也可以加上每一段弧形所占的比例,我们先从简单的开始,绘制一个简单的环形图。

先看下数据源长什么样子,依然是绘制饼图时用到的数据:

e7e2d5a8d01e65f5a8f053252eb6e9c6.png

所谓环形图,其实用到的依然是绘制饼图的函数,只是对其中的参数进行设置后形成环形图,我们先来绘制一个简单的第一小学成绩环形图:

plt.figure(figsize=(8,8)) #新建画布,画布大小为8*8
​
plt.pie(data2.iloc[0,1:] #截取第一小学的成绩,radius=1 # 设置半径为1,labels=['语文','数学','英语'] #设置各个角的标签,autopct='%.2f%%' #设置精度为小数点后两位,textprops={'fontsize': 14, 'color': 'k'} #设置标签字体和颜色,wedgeprops=dict(width=0.4, edgecolor='w')); #设置饼弧宽度和边框颜色
​

和之前绘制饼图不同的是多设置了三个参数,一个是设置半径,一个是设置字体和颜色(介绍饼图的文章中饼图中字体有点小,颜色是默认的黑色,其实字体大小和颜色都是可以设置的),最后一个是设置弧度宽度和边框颜色,所谓弧度的宽度其实就是环形的宽度。

来看下效果:

b6abeff751bfe80db4d3438fb76494dc.png

像这种简单的环形图,作用和饼图差不多,只能反映一个小学的成绩情况,如果想要查看两个学校对比的情况需要绘制两个图,当然环形图可以解决这个问题,下边我们来看下升级版的环形图!

绘制升级版环形图

以绘制两个环形为例:

plt.figure(figsize=(8,8)) #新建画布,画布大小为8*8
​
plt.pie(data2.iloc[0,1:] #截取第一小学的成绩,radius=1 # 设置半径为1,labels=['语文','数学','英语'] #设置各个角的标签,autopct='%.2f%%' #设置精度为小数点后两位,textprops={'fontsize': 14, 'color': 'k'} #设置标签字体和颜色,wedgeprops=dict(width=0.4, edgecolor='w')) #设置饼弧宽度和边框颜色
​
plt.pie(data2.iloc[1,1:] #截取第二小学的成绩,radius=0.6 # 设置半径为0.6,autopct='%.2f%%'#设置精度为小数点后两位,textprops={'fontsize': 12, 'color': 'w'}#设置标签字体和颜色,wedgeprops=dict(width=0.4, edgecolor='w'));#设置饼弧宽度和边框颜色

以前的文章提到过,可以在同一块画布上重复绘图,在绘制堆积条形图的时候用到的就是这个知识点,绘制多个环的环形图也是相同的道理。

在同一块画布上绘制两个环,一个大环一个小环,需要注意的是要先绘制大环,后绘制小环,因为后绘制的图会覆盖先绘制的图,所以我们设置第一个环的半径是1,后边绘制的环半径是0.6,来看下效果:

09ffb17a90f0d0f97c5e713af22940f6.png

喏,就是这个效果了,这个图还缺少一个标题,相信大家都知道如何添加图形标题了。

当然这个环形图中的两个环挨在一起了,平时我们看到的环形图每个环之间会有一点间隙,能够很明显的看出是两个分离的环,其实这个也不难!仔细观察上边的代码,两个环之间的半径差是0.4,而我们对弧形宽度也设置的是0.4,所以两个环之间一点缝隙都没有,通过对这两个参数的设置就可以控制两个环之间的距离了。

plt.figure(figsize=(8,8))
​
plt.pie(data2.iloc[0,1:],radius=1,labels=['语文','数学','英语'],autopct='%.2f%%',textprops={'fontsize': 14, 'color': 'k'},wedgeprops=dict(width=0.3, edgecolor='w'))
​
plt.pie(data2.iloc[1,1:] ,radius=0.6 ,autopct='%.2f%%',textprops={'fontsize': 14, 'color': 'k'},wedgeprops=dict(width=0.3, edgecolor='w'))
​
plt.title("第一小学(外环)和第二小学(内环)成绩图");

两个环形的半径差没有变,依然是0.4,我们把弧形宽度改成了0.3,来看下效果:

141b4428d76ed67eb621f2588386625c.png

这样是不是就变成大家心目中环形图的样子了(我又偷偷的加上标题了)?这是两个学校的成绩环形图,如果想要多画几个环,记得把半径差设置大一点,弧形宽度设置小一点,能够容纳多个环形就可以啦!

你学会了吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

slim 搭建rnn_使用Keras搭建cnn+rnn, BRNN,DRNN等模型

Keras api 提前知道:Normalize the activations of the previous layer at each batch, i.e. applies a transformation that maintains the mean activation close to 0 and the activation standard deviation close to 1.TimeDistributed, 总的来说TimeDistribut…

JAVA入门级教学之(零基础了解计算机)

JAVA小白入门级教学(零基础了解计算机基础知识) 多动手自己操作,一点一点积累 首先我们了解一下计算机的基础知识 1.计算机构成(基础): 硬件:CPU、内存、硬盘、鼠标、显示器、鼠标等&#x…

oppo 手机侧滑快捷菜单_关于oppo手机菜单键调出的方法,原来是这样的

用OPPO手机朋友们,今天来教大家如何调出手机菜单键。工具/材料OPPO手机操作方法01首先,在手机桌面上找到设置,点击进入。02进入设置找到【面部与密码】,并点击它。03然后点击【关闭密码】,要想设置手机菜单键&#xff…

JAVA入门级教学之(JAVA程序的加载和运行)

JAVA程序的加载和运行 多思考多动脑(边参考文章最后的示意图,边按步骤理解) 1.JAVA程序的加载和运行包括两个非常重要的阶段: 编译阶段运行阶段 2.我们先来了解一下什么是编译阶段: 首先,我们自己动手敲…

abstract类中可以有private的成员_C++|static成员与单例模式

如果需要一个全局对象,如对话框、系统日志、显卡等设备的驱动程序对象、一台PC连接一个键盘等。这样的全局对象只能是一个且是全局的,这就是单例模式,如何实现呢?1 不能在类外部通过构造函数新建对象:构造函数的访问方…

JAVA入门级教学之(JDK安装-JDK、JRE、JVM)

1.下面我们开支安装JDK【JDK开源、免费】 安装地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 选择 Windows x64-->jdk-8u221-window-x64.exe 下载 下载完成后 双击JDK安装包-->进入安装界面(…

vim显示python嵌套级_在Vim中为Python突出显示语法

Vim中针对Python的语法突出显示(目标是Ubuntu 12.10)这是有关如何在Ubuntu 12.10的Python中设置语法突出显示的演练。 你所看到的就是你得到的:[https://github.com/sentientmachine/Pretty-Vim-Python/]一旦掌握了如何为特定用户将配色方案和语法突出显示注入到vi编…

JAVA入门级教学之(编写第一个HelloWorld程序)

目录 1.创建一个HelloWorld.java文件 2.用记事本打开HelloWorld.java 3.接下来我们要完成xxx.java-->xxx.class的步骤 怎么解决javac不可用的问题: 4.配置环境变量path 怎么配环境变量Path? 5.接下来就是在DOS命令窗口下进行编译【javac java源…

springboot api文档_SpringCloud/SpringBoot - 自动生成API文档

SpringCloud/SpringBoot 的项目一定要前后分离,这就需要一个API文档生成的工具,后端一定要和前端或者是移动端对接接口,那么问题来了,接口是不是要自己写给他们看,一般的会采用Excel或者Word来写,高级一点的…

JAVA入门级教学之(classpath的配置)

目录 JAVA入门级教学之(classpath的配置) 1.打开DOS命令窗口,执行java HelloWorld 2.疑问?:为什么会出现找不到HelloWorld.class文件? 3.解释: JAVA入门级教学之(classpath的配置…

语法手册_程序员必备——SQL语法速成手册

一、基本概念数据库术语数据库(database) - 保存有组织的数据的容器(通常是一个文件或一组文件)。数据表(table) - 某种特定类型数据的结构化清单。模式(schema) - 关于数据库和表的布局及特性的信息。模式定义了数据在表中如何存储,包含存储什么样的数据&#xff0…

JAVA入门级教学之(JAVA注释)

目录 JAVA入门级教学之(JAVA注释) 1.关于java源程序中的注释: 2.java中的注释怎么写? JAVA入门级教学之(JAVA注释) 1.关于java源程序中的注释: 什么是注释?注释的作用是什么&…

JAVA入门级教学之(你是否理解HelloWorld的这段经典的代码的注释)

//public表示公开的 //class表示一个类 //HelloWorld表示一个类名public class HelloWorld{//表示一个公开的类,类名是HelloWorld//在这个大括号内写的是类体,类体中不能直接编写java语句【除声明变量之外】,否则会报错/*public表示公开的sta…

devtools的ctrl加r_Chrome DevTools调试技巧

【1】DevTools触发伪类右键单击Elements面板中的元素节点并选择“ force state ”。或者在Sytle子窗格中单击“:hov ”图标。可以触发元素上的伪类来研究元素在悬停时的效果和样式​【2】DevTools-在任何网页上运行预定义的代码片段DevTools中有一个叫做代码段的特性…

JAVA入门级教学之(public class和class的区别)

目录 JAVA入门级教学之(public class和class的区别) 1.public class 和 class 的区别: 2.public class 类名A{ }的 类名A需要和源文件 类名 保持一致 总的来说: JAVA入门级教学之(public class和class的区别&…

c 程序中的注释相当于空白字符_Python专题 | (三)注释、变量与输出

小伙伴们,大家好呀,欢迎回到我们的python专题。前两篇文章已经把编程简单的知识和大家介绍过了,今天我们正式开始学习python语法。第一个python程序我们在第一篇文章中介绍pycharm的安装时曾给大家展示过这样的一段代码:print(&qu…

JAVA入门级教学之(第一章总结)

总结第一章需要掌握的内容: 理解java的加载与执行能理解自己搭建的java开发环境(JDK)能够独立编写HelloWorld程序,编译并运行掌握环境变量path的原理以及如何配置掌握环境变量classpath的原理以及如何配置java中的注释public cla…

JAVA入门级教学之(标识符与关键字)

目录 JAVA入门级教学之(标识符与关键字) 1.什么是标识符? 2.标识符的命名规则? 3.标识符的命名规范? 4.严格遵守规则和规范: 在java里的关键字都是小写的 JAVA入门级教学之(标识符与关键字) 1.什…

birt project mysql_eclipse birt如何连接mysql数据库 配置文件

双击.rptdesign打开data explorer,右键点Data Sources -> New Data Sources ->JDBC Data Source到Next如果没有mysql-connector-java的包,请去下一个http://dev.mysql.com/downloads/connector/j/5.0.html然后在Driver Class这里就可以选 com.mysql.jdbc.Driv…

JAVA入门级教学之(变量)

目录 关于java语当中的变量: 1、什么是变量? 2、数据类型的作用? 3、变量要求 4、声明/定义变量的语法格式: 5、变量声明之后怎么赋值? 6、声明和赋值可以放到一起完成 7、变量赋值之后,可以重新赋值&…