为箱线图创建自定义填充颜色

Beginner
立即练习

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

简介

本教程将指导你使用 Python Matplotlib 为箱线图创建自定义填充颜色的过程。箱线图是一种用于展示一组数据分布的图表类型。它们展示了数据集的中位数、四分位数和异常值。在本教程中,我们将使用 Matplotlib 中的 boxplot() 函数创建两种类型的箱线图(矩形和带缺口的),并用自定义颜色填充它们。

虚拟机使用提示

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

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

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

导入所需库

我们将首先导入所需的库。在这个例子中,我们将使用 numpy 和 matplotlib.pyplot 库。

import matplotlib.pyplot as plt
import numpy as np

创建随机测试数据

接下来,我们将使用 numpy 库创建随机测试数据。我们将生成 3 组数据,每组数据具有不同的标准差。

np.random.seed(19680801)
all_data = [np.random.normal(0, std, size=100) for std in range(1, 4)]
labels = ['x1', 'x2', 'x3']

创建矩形箱线图

现在我们将使用 Matplotlib 中的 boxplot() 函数创建一个矩形箱线图。我们将把 patch_artist 参数设置为 True 以便用颜色填充箱体。

fig, ax1 = plt.subplots(figsize=(9, 4))
bplot1 = ax1.boxplot(all_data,
                     vert=True,  ## 垂直箱体对齐
                     patch_artist=True,  ## 用颜色填充
                     labels=labels)  ## x 轴刻度标签
ax1.set_title('Rectangular Box Plot')

创建带缺口的箱线图

现在我们将使用 boxplot() 函数创建一个带缺口的箱线图。我们将把 notch 参数设置为 True 来创建带缺口的箱线图。

fig, ax2 = plt.subplots(figsize=(9, 4))
bplot2 = ax2.boxplot(all_data,
                     notch=True,  ## 缺口形状
                     vert=True,  ## 垂直箱体对齐
                     patch_artist=True,  ## 用颜色填充
                     labels=labels)  ## x 轴刻度标签
ax2.set_title('Notched Box Plot')

用自定义颜色填充箱线图

接下来,我们将用自定义颜色填充箱线图。我们将创建一个颜色列表,并使用循环为每个箱体填充不同的颜色。

colors = ['pink', 'lightblue', 'lightgreen']
for bplot in (bplot1, bplot2):
    for patch, color in zip(bplot['boxes'], colors):
        patch.set_facecolor(color)

添加水平网格线

最后,我们将使用 yaxis.grid() 函数为箱线图添加水平网格线。

for ax in [ax1, ax2]:
    ax.yaxis.grid(True)
    ax.set_xlabel('Three Separate Samples')
    ax.set_ylabel('Observed Values')

plt.show()

总结

在本教程中,我们学习了如何使用 Python 的 Matplotlib 为箱线图创建自定义填充颜色。我们首先导入所需的库,创建随机测试数据,然后创建矩形和带缺口的箱线图。接着,我们用自定义颜色填充箱线图并添加了水平网格线。箱线图是用于展示数据分布的实用可视化工具,而自定义填充颜色可使其在视觉上更具吸引力。