使用 PatchCollection 从误差线创建箱线图

PythonPythonBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将学习如何使用PatchCollection从误差线创建箱线图。箱线图对于展示数据的范围和分布很有用。通过添加一个由x和y方向上的误差线限制定义的矩形补丁,我们可以制作出更具视觉吸引力的误差线图。

虚拟机使用提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签以访问Jupyter Notebook进行练习。

有时,你可能需要等待几秒钟让Jupyter Notebook完成加载。由于Jupyter Notebook的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向Labby提问。课程结束后提供反馈,我们将立即为你解决问题。

导入库

我们首先将导入必要的库,包括 numpymatplotlib

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方向上的误差线限制定义的矩形补丁,我们能够创建一个更具视觉吸引力的误差线图。