简介
在本实验中,我们将学习如何使用 PatchCollection 从误差线创建箱线图。箱线图对于展示数据的范围和分布很有用。通过添加一个由 x 和 y 方向上的误差线限制定义的矩形补丁,我们可以制作出更具视觉吸引力的误差线图。
虚拟机使用提示
虚拟机启动完成后,点击左上角切换到“笔记本”标签以访问 Jupyter Notebook 进行练习。
有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。
如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。
导入库
我们首先将导入必要的库,包括 numpy 和 matplotlib。
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.collections import PatchCollection
from matplotlib.patches import Rectangle
准备数据
然后我们将为箱线图准备数据。我们将为 x 和 y 值以及误差值创建一些虚拟数据。
## 数据点数量
n = 5
## 虚拟数据
np.random.seed(19680801)
x = np.arange(0, n, 1)
y = np.random.rand(n) * 5.
## 虚拟误差(上下)
xerr = np.random.rand(2, n) + 0.1
yerr = np.random.rand(2, n) + 0.2
创建误差框函数
现在我们将创建一个名为 make_error_boxes 的函数,该函数将创建一个由 x 和 y 方向上的误差线限制定义的矩形补丁。
def make_error_boxes(ax, xdata, ydata, xerror, yerror, facecolor='r',
edgecolor='none', alpha=0.5):
## 遍历数据点;根据每个点的误差创建框
errorboxes = [Rectangle((x - xe[0], y - ye[0]), xe.sum(), ye.sum())
for x, y, xe, ye in zip(xdata, ydata, xerror.T, yerror.T)]
## 使用指定的颜色/透明度创建补丁集合
pc = PatchCollection(errorboxes, facecolor=facecolor, alpha=alpha,
edgecolor=edgecolor)
## 将集合添加到坐标轴
ax.add_collection(pc)
## 绘制误差线
artists = ax.errorbar(xdata, ydata, xerr=xerror, yerr=yerror,
fmt='none', ecolor='k')
return artists
创建图形和坐标轴
现在我们将使用 plt.subplots() 为箱线图创建图形和坐标轴。
## 创建图形和坐标轴
fig, ax = plt.subplots(1)
调用函数创建误差框
现在我们将调用 make_error_boxes() 函数在我们的图表上创建误差框。
## 调用函数创建误差框
_ = make_error_boxes(ax, x, y, xerr, yerr)
显示图表
最后,我们将使用 plt.show() 来显示图表。
plt.show()
总结
在本实验中,我们学习了如何使用 Matplotlib 中的 PatchCollection 从误差线创建箱线图。通过添加一个由 x 和 y 方向上的误差线限制定义的矩形补丁,我们能够创建一个更具视觉吸引力的误差线图。