当前有效matplotlib版本为:3.4.1

概述

error()函数的作用是在plot函数的基础上,在数据点位置绘制误差棒。

函数的签名为matplotlib.pyplot.errorbar(x, y, yerr=None, xerr=None, fmt='', ecolor=None, elinewidth=None, capsize=None, barsabove=False, lolims=False, uplims=False, xlolims=False, xuplims=False, errorevery=1, capthick=None, *, data=None, **kwargs)

函数的参数为:

  • x,y:数据的位置。类型为浮点数或类数组结构。必备参数。
  • xerr, yerr:误差棒的误差范围,所有值必须为正值。类型为浮点数、类数组结构(N,)(2, N)。可选参数。
  • 浮点数:所有点具有同一个对称的正负误差。
  • 一维数组:每个点具有一个对应元素的对称的正负误差。
  • (2, N)数组:每个点具有一个对应元素的非对称的正负误差。其中第一行包含负误差,第二行包含正误差。
  • None:不绘制误差棒
  • fmt:数据点/线的格式字符串,同plot函数。类型为字符串,默认值为''。可选参数。当取值为none时,不显示点和线。
  • ecolor:误差棒线条的颜色。类型为颜色值,默认值为None,即使用与误差棒连接的标记点的颜色。可选参数。
  • elinewidth:误差棒线条的宽度。类型为浮点数,默认值为None,即当前样式所使用的的线条宽度。 可选参数。
  • capsize:误差棒两端横杠的长度。类型为浮点数,单位为像素点,默认值为rcParams["errorbar.capsize"],即0.0。可选参数。
  • capthick:误差棒两端横杠的宽度,markeredgewidth参数的别名。类型为浮点数,默认值为None。可选参数。
  • barsabove:误差棒是否位于数据符号之上。类型为布尔值,默认值False。 可选参数。
  • lolims, uplims, xlolims, xuplims:控制显示误差棒的上限部分或下限部分。类型为布尔值,默认值False。 可选参数。
    其中lolims, uplims用于控制y轴误差棒,xlolims, xuplims用于控制x轴误差棒。例如lolims用于控制y轴下限,当值为True时,当前数据点y值即为下限值,这意味着只显示大于该值的误差棒!即误差棒的上半部分。以此类推。
  • errorevery:根据数据的子集绘制误差棒,相当于抽样,每errorevery个数据绘制一个误差棒。类型为整数或(整数,整数)二元组,默认值为1
  • **kwargsmatplotlib.lines.Line2D对象属性。

返回值为matplotlib.container.ErrorbarContainer对象。

  • plotlineLine2D实例
  • caplines:误差棒两端横杠的Line2D对象二元组
  • barlinecols:水平/垂直方向误差范围 LineCollection对象元组

案例:演示yerr参数取值(对称误差、非对称误差)

python画cdf误差图 matplotlib 误差棒_errorbar

import numpy as np
import matplotlib.pyplot as plt


# 构造数据
x = np.arange(10)
y = 2.5 * np.sin(x / 20 * np.pi)
# 构造一维数组
yerr1 = np.linspace(0.05, 0.2, 10)
# 构造(2,N)结构的数组
yerr2 = np.random.rand(2,10)

# 浮点值,所有点统一对称误差
plt.errorbar(x, y, yerr=0.5)
# 一维数组,每个点分别根据数组对应元素设置对称误差
plt.errorbar(x, y - 1, yerr=yerr1)
# (2,N)结构数组,每个点分别根据数组设置误差
# 第一行对应每个点的负误差,第二行对应每个点的正误差
plt.errorbar(x, y - 2, yerr=yerr2)

plt.show()

案例:演示外观参数和抽样参数

python画cdf误差图 matplotlib 误差棒_误差棒_02

import numpy as np
import matplotlib.pyplot as plt


# 构造数据
x = np.arange(10)
y = 2.5 * np.sin(x / 20 * np.pi)

# 默认样式
plt.errorbar(x, y, yerr=0.2)
# 修改外观属性
plt.errorbar(x, y - 1, yerr=0.2, fmt='-', ecolor='r',
             elinewidth=2, capsize=2, capthick=1, barsabove=True)
# 抽样数据,每2个数据绘制一个误差棒
plt.errorbar(x, y - 2, yerr=0.2, errorevery=2)

plt.show()

案例:演示uplimslolims参数

python画cdf误差图 matplotlib 误差棒_pyplot_03

import numpy as np
import matplotlib.pyplot as plt


# 构造数据
x = np.arange(10)
y = 2.5 * np.sin(x / 20 * np.pi)
yerr = np.linspace(0.05, 0.2, 10)
# 默认样式
plt.errorbar(x, y + 3, yerr=yerr, label='default')
# 只显示负误差部分
plt.errorbar(x, y + 2, yerr=yerr, uplims=True, label='uplims=True')
# 显示正负误差两部分
plt.errorbar(x, y + 1, yerr=yerr, uplims=True, lolims=True,
             label='uplims=True, lolims=True')
# 混合应用
upperlimits = [True] * 10
lowerlimits = [False, True] * 5
plt.errorbar(x, y, yerr=yerr, uplims=upperlimits, lolims=lowerlimits,
             label='subsets of uplims and lolims')

plt.legend()
plt.show()