绘制误差线
对任何一种科学测量方法来说,准确的衡量数据误差都是无比重要的事情,甚至比数据本身还重要.在数据可视化的结果中用图形将误差有效的显示出来,就可以提供更充分的信息.
基本误差线
#以下代码在notebook中执行
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
plt.style.use('seaborn-whitegrid')
x = np.linspace(0, 10, 50)
dy = 0.8
y = np.sin(x) + 0.8 * np.random.randn(50)
#fmt是一种控制线条和点的外观的代码格式,语法与plt.plot的缩写代码一样.
plt.errorbar(x, y, yerr=dy, fmt='.k')
连续误差
有时候可能需要显示连续变量的误差。matplotlib通过plt.plot和plt.fill_between来实现。下面通过Scikit-Learn程序库的API里面的高斯过程回归方法来演示。这是用一种非常灵活的非参数方程对带有不确定性的连续测量变量进行拟合的方法。
from sklearn.gaussian_process import GaussianProcess
#定义模型和要画的数据
model = lambda x: x * np.sin(x)
xdata = np.array([1,3,5,6,8])
ydata = model(xdata)
#计算高斯过程拟合结果
gp = GaussianProcess(corr='cubic', theta0=1e-2, thetaL=1e-4, thetaU=1E-1,
random_start=100)
gp.fit(xdata[:, np.newaxis], ydata)
xfit = np.linspace(0, 10, 1000)
yfit, MSE = gp.predict(xfit[:, np.newaxis], eval_MSE=True)
dyfit = 2 * np.sqrt(MSE) #s*sigma~95%的置信区间
#将上面的参数传入plt.errorbar函数,我们不是真的要为1000个数据点画上1000条误差线,相反,可以通过plt.fill_between函数中设置颜色来表示连续误差线
plt.plot(xdata, ydata, 'or')
plt.plot(xfit, yfit, '-', color='gray')
#颜色为灰色,设置透明度为0.2
plt.fill_between(xfit, yfit - dyfit, yfit+dyfit, color='gray', alpha=0.2)