博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Matplotlib学习---用matplotlib画误差线(errorbar)
阅读量:5319 次
发布时间:2019-06-14

本文共 2331 字,大约阅读时间需要 7 分钟。

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

 

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

 

下面利用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 npimport pandas as pdfrom matplotlib import pyplot as pltcrime=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参数即可。

 

转载于:https://www.cnblogs.com/HuZihu/p/9418903.html

你可能感兴趣的文章
nowcoder 203J Graph Coloring I(dfs)
查看>>
异常处理
查看>>
MySQL 的相关语句(增删改查)(SQLyog软件实现)
查看>>
特迷茫的大三时期
查看>>
Java中的深复制和浅复制
查看>>
绘制矩形:描边矩形imagerectangle()、填充矩形imagefilledrectangle()
查看>>
浙江省三级数据库考试
查看>>
eclipse导入导出工作空间配置
查看>>
UIPickerView 修改里面的字体大小
查看>>
4.3 day13 迭代器 生成器
查看>>
《Algorithms》第6章:Dynamic Programming 学习笔记
查看>>
1168: mxh对lfx的询问(前缀和+素数表)
查看>>
python中time类型,datetime类型的关系与互相转换
查看>>
【php】基础学习4
查看>>
递归神经网络(Recursive Neural Network, RNN)
查看>>
给wxPython事件处理函数传递参数
查看>>
csv文件批量导入数据到sqlite。
查看>>
实验三-有穷自动机的构造和识别
查看>>
Jdk在window环境下的安装与配置详解
查看>>
C# 两个窗体中相互切换的方法
查看>>