📜  python 如何使用 swarmplot 制作箱线图 - Python (1)

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

Python 如何使用 swarmplot 制作箱线图

简介

Swarmplot 是一种可视化数据分布的图表类型。与箱线图类似,它可以用于展示多组数据之间的差异。Swarmplot 的特点是在数据点周围添加了一个小的偏移量,避免了数据点的重叠。因此,Swarmplot 适用于小规模的数据集。

使用 Swarmplot 制作箱线图的步骤
1. 导入需要的库

Swarmplot 是 seaborn 库中的一个可视化函数,因此需要导入 seaborn 库和 matplotlib 库。

import seaborn as sns
import matplotlib.pyplot as plt
2. 准备数据集

这里我们以 seaborn 自带的 tips 数据集为例,让我们看一下数据集中的信息。

sns.load_dataset('tips').info()

结果:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 244 entries, 0 to 243
Data columns (total 7 columns):
 #   Column     Non-Null Count  Dtype  
---  ------     --------------  -----  
 0   total_bill  244 non-null    float64
 1   tip        244 non-null    float64
 2   sex        244 non-null    category
 3   smoker     244 non-null    category
 4   day        244 non-null    category
 5   time       244 non-null    category
 6   size       244 non-null    int64  
dtypes: category(4), float64(2), int64(1)
memory usage: 7.0 KB

这是一个具有 244 行和 7 列的数据集。我们我们只需要使用其中的两列数据 total_bill 和 day,为了更具有可读性,用数字代替星期几,0 代表星期天,6 代表星期六。

import pandas as pd

df = sns.load_dataset('tips')
df = df[['total_bill', 'day']]
df['day'] = pd.Categorical(df['day']).codes
3. 绘制 Swarmplot

Swarmplot 的绘制非常简单,只需要使用 sns.swarmplot 函数即可。其中 x 表示 total_bill 数据,y 表示 day 数据。

sns.swarmplot(x='total_bill', y='day', data=df)

swarmplot01

4. 添加箱线图

为了更好地展示数据分布情况,我们可以在 Swarmplot 上添加箱线图。使用 sns.boxplot 函数即可。

sns.boxplot(x='total_bill', y='day', data=df)

swarmplot02

5. 绘制 Swarmplot 和 箱线图

绘制 Swarmplot 和 箱线图可以通过在同一张图表上绘制两个子图实现。使用 matplotlib 的子图功能,先创建一个 figure 对象,然后调用 add_subplot 方法添加子图,最后在子图上绘制 Swarmplot 和 箱线图。设置 Swarmplot 的参数 dodge=True 可以让数据点避免重叠。

fig, ax = plt.subplots(1, 2, figsize=(10, 6))
sns.swarmplot(x='total_bill', y='day', data=df, ax=ax[0], dodge=True)
sns.boxplot(x='total_bill', y='day', data=df, ax=ax[1])

swarmplot03