📜  如何在Python中使用 Seaborn 在 Boxplot 上显示均值?(1)

📅  最后修改于: 2023-12-03 15:24:34.376000             🧑  作者: Mango

如何在Python中使用 Seaborn 在 Boxplot 上显示均值?

介绍

在数据可视化中,Boxplot 是一种常见的方式用于显示数据的分布情况。Seaborn 是一个 Python 数据可视化库,它提供了丰富的绘图功能和美观的图形风格。在 Seaborn 中,我们可以使用 boxplot() 函数绘制 Boxplot。本文将介绍如何在 Boxplot 上显示均值。

示例

我们使用 Seaborn 提供的数据集 tips,它包含了一些关于用餐人数、小费、性别、抽烟情况和日期等方面的信息。我们首先需要导入 Seaborn 和数据集:

import seaborn as sns
import pandas as pd

tips = sns.load_dataset("tips")

接下来,我们可以使用 boxplot() 函数绘制 Boxplot:

sns.boxplot(x="day", y="total_bill", data=tips)

boxplot1

现在的 Boxplot 没有显示均值。我们可以通过添加 stripplot() 函数并设置 jitter 参数来在 Boxplot 上显示单个观测值。具体来说,jitter 参数控制在 x 轴方向上观测值的偏移程度,越大偏移的程度就越大。默认情况下,jitter=0.4。

sns.boxplot(x="day", y="total_bill", data=tips)
sns.stripplot(x="day", y="total_bill", data=tips, jitter=True, color=".3")

boxplot2

这样 Boxplot 上就显示了单个观测值。接下来,我们可以使用 matplotlib 库来添加均值的线段。具体来说,我们需要先计算出每个分类的均值,然后使用 matplotlib 库绘制线段。

import numpy as np
import matplotlib.pyplot as plt

# 计算每个分类的均值
mean_vals = tips.groupby('day')['total_bill'].mean().values

# 绘制中位数线和均值线
sns.boxplot(x="day", y="total_bill", data=tips)
sns.stripplot(x="day", y="total_bill", data=tips, jitter=True, color=".3")
for i in range(len(mean_vals)):
    plt.plot([i-.2, i+.2], [mean_vals[i], mean_vals[i]], '-', lw=4, color='k')

![boxplot3][3]

现在,Boxplot 上显示了均值线和中位数线。

结论

本文介绍了如何在 Python 中使用 Seaborn 在 Boxplot 上显示均值。我们可以使用 stripplot() 函数在 Boxplot 上显示单个观测值,使用 matplotlib 库绘制均值线。这些方法可以让我们更好地了解数据的分布情况。

[3]: https://raw.githubusercontent.com/tensorxing/PythonGuide/main/imgs/19-3.png