Matplotlib学习---用matplotlib画饼图/面包圈图(pie chart, donut chart)
我在网上随便找了一组数据,用它来学习画图。大家可以直接把下面的数据复制到excel里,然后用pandas的read_excel命令读取。或者直接在脚本里创建该数据。

饼图: ax.pie(x,labels=...,explode=...)
代码如下:
import numpy as np
import matplotlib
from matplotlib import pyplot as plt
matplotlib.rcParams['font.sans-serif']='Microsoft Yahei' #改字体为微软雅黑,以便显示中文
fig,ax=plt.subplots() animal={"锯齿动物":38,"蝙蝠类":21.8,"食虫类":8.2,"灵长类":8,"其他":6.9,"有袋类":6.5,"食肉类":5.6,"偶蹄类":5} #创建数据
data=np.array([i for i in animal.values()]).astype(float) #饼图显示数据,将其转换成float格式
explode=[0.1,0,0,0,0,0,0,0] #设置突出显示的内容,这里为突出显示第一项
label=np.array([j for j in animal.keys()]) #设置标签
ax.pie(data,labels=label,autopct='%.1f%%',explode=explode,startangle=90,counterclock=False) #autopct为显示百分比,startangle为起始角度,counterclock逆时针选否
ax.set_title("哺乳动物类群") #设置标题
ax.axis("equal") #设置x轴和y轴等长,否则饼图将不是一个正圆 plt.show()
图像如下:

需要注意的是:所有类别的百分比相加应为100%,千万不要出现少于或大于100%的情况。
还有一种图是面包圈图,就是饼中心是空的。可以通过设置ax.pie命令里的wedgeprops参数来达到此效果。
还是以上面的数据为例,来画面包圈图:
import numpy as np
import matplotlib
from matplotlib import pyplot as plt
matplotlib.rcParams['font.sans-serif']='Microsoft Yahei' #改字体为微软雅黑,以便显示中文
fig,ax=plt.subplots() animal={"锯齿动物":38,"蝙蝠类":21.8,"食虫类":8.2,"灵长类":8,"其他":6.9,"有袋类":6.5,"食肉类":5.6,"偶蹄类":5} #创建数据
data=np.array([i for i in animal.values()]).astype(float) #饼图显示数据,将其转换成float格式
label=np.array([j for j in animal.keys()]) #设置标签
ax.pie(data,labels=label,autopct='%.1f%%',startangle=90,counterclock=False,wedgeprops=dict(width=0.6,edgecolor='w')) #autopct为显示百分比,startangle为起始角度,counterclock逆时针选否
ax.set_title("哺乳动物类群") #设置标题
ax.axis("equal") #设置x轴和y轴等长,否则饼图将不是一个正圆 plt.show()
图像如下:

Matplotlib学习---用matplotlib画饼图/面包圈图(pie chart, donut chart)的更多相关文章
- Matplotlib学习---用matplotlib画箱线图(boxplot)
箱线图通过数据的四分位数来展示数据的分布情况.例如:数据的中心位置,数据间的离散程度,是否有异常值等. 把数据从小到大进行排列并等分成四份,第一分位数(Q1),第二分位数(Q2)和第三分位数(Q3)分 ...
- Matplotlib学习---用matplotlib画直方图/密度图(histogram, density plot)
直方图用于展示数据的分布情况,x轴是一个连续变量,y轴是该变量的频次. 下面利用Nathan Yau所著的<鲜活的数据:数据可视化指南>一书中的数据,学习画图. 数据地址:http://d ...
- Matplotlib学习---用seaborn画联合分布图(joint plot)
有时我们不仅需要查看单个变量的分布,同时也需要查看变量之间的联系,这时就需要用到联合分布图. 这里利用Jake Vanderplas所著的<Python数据科学手册>一书中的数据,学习画图 ...
- Matplotlib学习---用matplotlib和sklearn画拟合线(line of best fit)
在机器学习中,经常要用scikit-learn里面的线性回归模型来对数据进行拟合,进而找到数据的规律,从而达到预测的目的.用图像展示数据及其拟合线可以非常直观地看出拟合线与数据的匹配程度,同时也可用于 ...
- Matplotlib学习---用matplotlib画误差线(errorbar)
误差线用于显示数据的不确定程度,误差一般使用标准差(Standard Deviation)或标准误差(Standard Error). 标准差(SD):是方差的算术平方根.如果是总体标准差,那么用σ表 ...
- Matplotlib学习---用matplotlib画阶梯图(step plot)
这里利用Nathan Yau所著的<鲜活的数据:数据可视化指南>一书中的数据,学习画图. 数据地址:http://datasets.flowingdata.com/us-postage.c ...
- Matplotlib学习---用matplotlib画面积图(area chart)
这里利用Nathan Yau所著的<鲜活的数据:数据可视化指南>一书中的数据,学习画图. 数据地址:http://book.flowingdata.com/ch05/data/us-pop ...
- Matplotlib学习---用matplotlib画热图(heatmap)
这里利用Nathan Yau所著的<鲜活的数据:数据可视化指南>一书中的数据,学习画图. 数据地址:http://datasets.flowingdata.com/ppg2008.csv ...
- Matplotlib学习---用matplotlib画折线图(line chart)
这里利用Jake Vanderplas所著的<Python数据科学手册>一书中的数据,学习画图. 数据地址:https://raw.githubusercontent.com/jakevd ...
随机推荐
- nodejs源码编译-mipse64el架构
下载nodejs,node-v6.1.0.tar.gz 链接: https://pan.baidu.com/s/1eCtNBWD5yaKiQIHp3pRKew 提取码: faun 注意对应版本的gcc ...
- MySQL中myisam与innodb的区别
1. myisam与innodb的5点不同 1>.InnoDB支持事物,而MyISAM不支持事物 2>.InnoDB支持行级锁,而MyISAM支持表级锁 3>.InnoDB支持MV ...
- PS调出清新淡雅外景女生背影照
首先,依然是前期事项. 这套图是八月份下午三点多在草地上拍的(好像标题的秋日欺骗了大众XD),阳光很烈,不过也因为这样,能拍出比较清新的蓝天.用的是腾龙70-200 2.8VC拍摄,长焦在拍这种空旷大 ...
- jmeter的jtl日志转html报告常见报错笔记
问题:生成的jmeter文件可以放任意位置 输入命令转换hmtl报告 PS D:\user\80003288\桌面\Ques> jmeter -g .\test1.jtl -e -o .\rep ...
- C#设计模式之2:单例模式
在程序的设计过程中很多时候系统会要求对于某个类型在一个应用程序域中只出现一次,或者是因为性能的考虑,或者是由于逻辑的要求,总之是有这样的需求的存在,那在设计模式中正好有这么一种模式可以来满足这样的要求 ...
- [转帖] bat方式遍历目录内的文件
https://blog.csdn.net/qq_34924407/article/details/82781956 知识挺好用的 学习一下. #所有文件,包括子目录下的文件 @echo offcd ...
- 【Java编译】含package的类文件编译
含package的类文件编译: package com.zhangxueliang.setdemo; public class Demo1 { public static void main(Stri ...
- 用Canvas实现一些简单的图片滤镜
1.灰度滤镜 对于灰度滤镜的实现一般有三种算法 1) 最大值法:即新的颜色值R=G=B=Max(R,G,B),通过这种方法处理后的图片看起来亮度值偏高. 2) 平均值法:即新的颜色值R=G=B=(R+ ...
- python django 的环境搭建(centos)
一.安装好nginx 二.安装uwsgi yum install python-devel -y pip3 install uwsgi #测试启动django /usr/local/python3/b ...
- jdbc一点小笔记
JDBC的常用接口的步骤, 1使用Driver或者Class.forName()进行注册驱动: 2使用DriverManager进行获取数据库的链接.使用Connection获取语句对象.使用语句对象 ...