在数据可视化时,除了展示数据的某个具体指,其置信区间也具有非常重要的参考意义,下图是一个典型的线性回归的拟合结果 涂色的蓝色直线表示的是线性回归的预测值,浅蓝色区域则是由每个预测值的置信区间构成,在matplotlib中, 可以通过fill_between系列函数来实现图中的置信区间的展示效果。 具体的,该系列包含了fill_between和fill_betweenx两个函数,其中,fill_between函数用于在两个水平曲线之间进行填充,fill_betweenx用于在两条数值区间之间进行填充, 两个函数的参数完全一致。 以fill_between函数为例,用法如下 >>> import numpy as np >>> x = np.arange(4) >>> y1 = x + 1 >>> y2 = x -1 >>> plt.fill_between(x, y1, y2) >>> plt.plot(x, y1, 'go') >>> plt.plot(x, y2, 'go') >>> plt.fill_between(x, y1, y2) fill_between函数有x, y1, y2这3个基本参数,其中通过(x, y1)指定了第一条水平线,(x, y2)指定了第二条水平线,然后在两个水平线之间进行填充。为了方便理解,在图中用绿色的点标记出了对应的点的位置。 其中,y2参数是有默认值的,其默认值为0, 所以只提供两个参数也是可以的 >>> plt.fill_between(x, y1) 输出结果如下 在实际使用中,fill_between主要有两种使用场景 1. 添加置信区间 用法如下 >>> N = 21 >>> x = np.linspace(0, 10, 11) >>> y = [3.9, 4.4, 10.8, 10.3, 11.2, 13.1, 14.1, 9.9, 13.9, 15.1, 12.5] >>> a, b = np.polyfit(x, y, deg=1) >>> y_est = a * x + b >>> y_err = x.std() * np.sqrt(1/len(x) + (x - x.mean())**2 / np.sum((x - x.mean())**2)) >>> plt.plot(x, y , 'o') >>> plt.plot(x, y_est, '-') >>> plt.fill_between(x, y_est - y_err, y_est + y_err, alpha = 0.2) 输出结果如下 2. 填充曲线下面积 用法如下 >>> x = np.arange(0.0, 1, 0.005) >>> y = np.sin(np.pi * x) >>> plt.fill_between(x, y, alpha = 0.6) >>> plt.plot(x, y) 输出结果如下 通过fill_between系列函数,可以实现面积填充的功能,无论是绘制置信区间,还是曲线下面积,都可以轻松实现。
|