使用 Matplotlib 创建可定制的箱线图

Beginner

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

简介

箱线图是通过一组数据的四分位数对其进行的图形表示。它用于根据数据的五数概括(最小值、第一四分位数、中位数、第三四分位数和最大值)来展示数据的分布。在本教程中,我们将学习如何使用 Python 中的 Matplotlib 库创建和自定义箱线图。

虚拟机使用提示

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

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

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

导入库并生成数据

我们首先导入必要的库并生成虚拟数据。

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.cbook as cbook

## Generate fake data
np.random.seed(19680801)
data = np.random.lognormal(size=(37, 4), mean=1.5, sigma=1.75)
labels = list('ABCD')

计算箱线图统计量

matplotlib.cbook 模块中的 boxplot_stats() 函数用于计算箱线图所需的统计量。我们将数据和标签作为参数传入。

## Compute boxplot stats
stats = cbook.boxplot_stats(data, labels=labels, bootstrap=10000)

自定义箱线图统计量

我们可以修改在步骤 2 中计算出的任何箱线图统计量。在这个例子中,我们将每组数据的中位数设置为所有数据的中位数,并将均值翻倍。

for n in range(len(stats)):
    stats[n]['med'] = np.median(data)
    stats[n]['mean'] *= 2

创建一个基本的箱线图

我们可以通过调用 Matplotlib 的 bxp() 函数来创建一个基本的箱线图。我们将计算出的统计量作为参数传入。

## Create a basic boxplot
plt.bxp(stats)
plt.show()

切换不同元素的显示

我们可以使用 bxp() 函数中的各种参数来切换箱线图不同元素的显示。在这个例子中,我们展示如何显示或隐藏均值、箱体、箱须、凹口和异常值。

## Toggle the display of different elements
plt.bxp(stats, showmeans=True, showbox=False, showcaps=False, shownotches=True, showfliers=False)
plt.show()

自定义不同元素的显示

我们可以使用 bxp() 函数中的各种参数来自定义箱线图不同元素的显示。在这个例子中,我们展示如何自定义箱体、中位数、异常值、均值点和均值线。

## Customize the display of different elements
boxprops = dict(linestyle='--', linewidth=3, color='darkgoldenrod')
flierprops = dict(marker='o', markerfacecolor='green', markersize=12, linestyle='none')
medianprops = dict(linestyle='-.', linewidth=2.5, color='firebrick')
meanpointprops = dict(marker='D', markeredgecolor='black', markerfacecolor='firebrick')
meanlineprops = dict(linestyle='--', linewidth=2.5, color='purple')

plt.bxp(stats, boxprops=boxprops, flierprops=flierprops, medianprops=medianprops, meanprops=meanpointprops, meanline=True, showmeans=True)
plt.show()

总结

在本教程中,我们学习了如何使用 Python 中的 Matplotlib 库创建和自定义箱线图。我们还学习了如何切换不同元素的显示以及自定义它们的外观。箱线图是用于可视化数据分布和识别异常值的有用工具。