误差线用于显示数据的不确定程度,误差一般使用标准差(Standard Deviation)或标准误差(Standard Error)。

标准差(SD):是方差的算术平方根。如果是总体标准差,那么用σ表示,如果是样本标准差,那么用s表示。标准差反映数据集的离散程度,标准差越小,就说明数据越集中在其平均值附近。公式:(总体),(样本)
 
 
标准误差(SE):是样本分布的标准差。如果是样本平均数分布的标准差,那么就称为SEM(standard error of the mean),就是说每次从总体中抽取n个样本,抽取很多次后,每次抽样的平均值( )就形成了一个数据分布,这个数据分布有自己的平均值和标准差。抽样的平均值分布的平均数应该接近总体平均数( μ)。标准误差反映样本(sample)对于总体(population)的差异性,每次抽样的样本数越多,标准误差就越小。公式:
 

下面利用Nathan Yau所著的《鲜活的数据:数据可视化指南》一书中的数据,学习画图。

数据地址:http://datasets.flowingdata.com/crimeRatesByState2005.csv

以下是这个数据文件的前5行:

           state  murder  forcible_rape  robbery  aggravated_assault  \
0 United States 5.6 31.7 140.7 291.1
1 Alabama 8.2 34.3 141.4 247.8
2 Alaska 4.8 81.1 80.9 465.1
3 Arizona 7.5 33.8 144.4 327.4
4 Arkansas 6.7 42.9 91.1 386.8 burglary larceny_theft motor_vehicle_theft population
0 726.7 2286.3 416.7 295753151
1 953.8 2650.0 288.3 4545049
2 622.5 2599.1 391.0 669488
3 948.4 2965.2 924.4 5974834
4 1084.6 2711.2 262.1 2776221

这是美国各州各种犯罪行为的发生率(每10万人口)。

让我们画一个图,把全美各犯罪率的平均数,标准差展现出来。

误差线: ax.errorbar(x,y,yerr=error size in y axis,xerr=error size in x axis)

代码如下:

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
crime=pd.read_csv(r"http://datasets.flowingdata.com/crimeRatesByState2005.csv")
fig,ax=plt.subplots(figsize=(8,4)) col=crime.columns.astype(str) #提取列名,将来做x轴刻度标签
crime=crime[1:] #把第一行US的数据去除
data=crime.loc[:,"murder":"motor_vehicle_theft"] #提取数据部分,以便将来进行计算 crime.loc["mean"]=data.apply(np.mean) #增加一行,为数据每列的均值,apply函数用于数据每一列
crime.loc["standard deviation"]=data.apply(np.std) #增加一行,为数据每列的标准差,apply函数用于数据每一列 #画误差线,x轴一共7项,y轴显示平均值,y轴误差为标准差
ax.errorbar(np.arange(7),crime.loc["mean","murder":"motor_vehicle_theft"],\
yerr=crime.loc["standard deviation","murder":"motor_vehicle_theft"],\
fmt="o",color="blue",ecolor='grey',elinewidth=2,capsize=4)
ax.set_xticklabels(col,rotation=45) #设置x轴刻度标签,并使其倾斜45度,不至于重叠 plt.show()

图像如下:

另外,还可以在柱形图或条形图上画误差线,分别在ax.bar命令里加上yerr参数,或在ax.barh命令里加上xerr参数即可。

Matplotlib学习---用matplotlib画误差线(errorbar)的更多相关文章

  1. Matplotlib学习---用matplotlib画箱线图(boxplot)

    箱线图通过数据的四分位数来展示数据的分布情况.例如:数据的中心位置,数据间的离散程度,是否有异常值等. 把数据从小到大进行排列并等分成四份,第一分位数(Q1),第二分位数(Q2)和第三分位数(Q3)分 ...

  2. Matplotlib学习---用matplotlib画直方图/密度图(histogram, density plot)

    直方图用于展示数据的分布情况,x轴是一个连续变量,y轴是该变量的频次. 下面利用Nathan Yau所著的<鲜活的数据:数据可视化指南>一书中的数据,学习画图. 数据地址:http://d ...

  3. Matplotlib学习---用seaborn画联合分布图(joint plot)

    有时我们不仅需要查看单个变量的分布,同时也需要查看变量之间的联系,这时就需要用到联合分布图. 这里利用Jake Vanderplas所著的<Python数据科学手册>一书中的数据,学习画图 ...

  4. Matplotlib学习---用matplotlib和sklearn画拟合线(line of best fit)

    在机器学习中,经常要用scikit-learn里面的线性回归模型来对数据进行拟合,进而找到数据的规律,从而达到预测的目的.用图像展示数据及其拟合线可以非常直观地看出拟合线与数据的匹配程度,同时也可用于 ...

  5. Matplotlib学习---用matplotlib画阶梯图(step plot)

    这里利用Nathan Yau所著的<鲜活的数据:数据可视化指南>一书中的数据,学习画图. 数据地址:http://datasets.flowingdata.com/us-postage.c ...

  6. Matplotlib学习---用matplotlib画面积图(area chart)

    这里利用Nathan Yau所著的<鲜活的数据:数据可视化指南>一书中的数据,学习画图. 数据地址:http://book.flowingdata.com/ch05/data/us-pop ...

  7. Matplotlib学习---用matplotlib画热图(heatmap)

    这里利用Nathan Yau所著的<鲜活的数据:数据可视化指南>一书中的数据,学习画图. 数据地址:http://datasets.flowingdata.com/ppg2008.csv ...

  8. Matplotlib学习---用matplotlib画饼图/面包圈图(pie chart, donut chart)

    我在网上随便找了一组数据,用它来学习画图.大家可以直接把下面的数据复制到excel里,然后用pandas的read_excel命令读取.或者直接在脚本里创建该数据. 饼图: ax.pie(x,labe ...

  9. Matplotlib学习---用matplotlib画折线图(line chart)

    这里利用Jake Vanderplas所著的<Python数据科学手册>一书中的数据,学习画图. 数据地址:https://raw.githubusercontent.com/jakevd ...

随机推荐

  1. hibernate延迟加载org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.javakc.hibernate.onetomany.entity.DeptEntity.emp, could not initialize proxy - no Session

    public static void main(String[] args) {  DeptEntity dept = getDept("402882e762ae888d0162ae888e ...

  2. net core 小坑杂记之配置文件读取 02 (控制器里读)

    上次更新博客的时候提到了如何在EF的上下文里读取配置,这次介绍一下在控制器里如何读取. 先说一种简单易懂的: 首先以键值对的形式在appsettings里添加一条配置信息,接着Startup里注入配置 ...

  3. windows中在vs code终端使用bash

    vs code Visual Studio Code的缩写,很好用的一个编辑器. 终端 vs code的终端(命令行)在windows中,默认使用的是powershell,如下图所示: powersh ...

  4. MYSQL业务数据简单脱敏方案

    removesensitiveinformationplan.sh #!/bin/sh #!在模拟库上运行如下脚本 #!生产库crm-db #!模拟库crm-mock #!.备份生产库 mysqldu ...

  5. [转帖]linux tree命令--显示目录的树形结构

    linux tree命令--显示目录的树形结构    版权声明:iamqilei@qq.com https://blog.csdn.net/u011729865/article/details/533 ...

  6. 补充:pyhton 2 和3中的beyts类型

    在python2里,bytes == str python2里还有个单独的类型是unicode , 把字符串解码后,就会变成unicode. 既然python2中byets == str,那为什么还要 ...

  7. CSS3 background-size属性兼容

    background-size是CSS3新增的属性,但是IE8以下还是不支持 background-size:contain; // 缩小图片来适应元素的尺寸(保持像素的长宽比):background ...

  8. php-memcached详解

    一.memcached 简介 在很多场合,我们都会听到 memcached 这个名字,但很多同学只是听过,并没有用过或实际了解过,只知道它是一个很不错的东东.这里简单介绍一下,memcached 是高 ...

  9. python学习笔记(5)-基本数据类型-字符串类型及操作

    一.字符串 字符串由一对单引号或者双引号表示,如”abc“,‘中国’,字符串是字符的有序序列,可以对其中的字符进行索引.字符串也可以用三单引号或三双引号表示,可以表示多行字符串,一对单引号或双引号仅表 ...

  10. xml-dtd

    dtd用于校验XML的语法. dtd步骤: 1.看XML中有多少个元素,有几个元素,在dtd文件中写几个<!ELEMENT> 2.判断元素是简单元素还是复杂元素 -复杂元素:有子元素的元素 ...