如何使用 Python 中的 Seaborn 创建带有数据点的箱线图?


箱线图是总结数据集分布的强大可视化工具。它们提供了重要的统计参数,包括中位数、四分位数和可能的异常值。然而,传统的箱线图只提供汇总统计数据,因此可能无法提供数据的完整画面。

在本文中,我们将学习如何使用 Python 中的 Seaborn 创建带有数据点的箱线图。Seaborn 是一个基于 matplotlib 的流行数据可视化库。它提供了一个高级接口,用于创建漂亮的统计图形。我们可以使用 Seaborn 和 Matplotlib 的功能创建带有重叠数据点的箱线图,从而对数据集进行更深入的检查。

多种方法

为了使用 Python 中的 Seaborn 创建带有数据点的箱线图,我们可以遵循以下两种方法:

  • 通过在箱线图上叠加数据点。

  • 利用箱线图的箱形图。

让我们来研究这两种方法:

方法 1:通过在箱线图上叠加数据点

在这种方法中,我们通过在标准箱线图的顶部添加单个数据点来增强它们。通过可视化单个数据点以及汇总统计数据,我们可以更好地理解数据集的分布。使用这种方法,我们可以检查数据中的异常值和模式,以获得有洞察力的见解。

算法

步骤如下:

步骤 1 - 导入 seaborn 和 matplotlib.pyplot。

步骤 2 - 准备或加载数据集。

步骤 3 - 使用 seaborn.boxplot() 函数,可以使用数据集和所需的设置创建箱线图。

步骤 4 - 从箱线图中提取 Axes 对象。

步骤 5 - 使用 matplotlib.pyplot.scatter() 方法,遍历数据集并绘制每个数据点。

步骤 6 - 根据需要调整箱线图和数据点的外观。

步骤 7 - 使用 matplotlib.pyplot.show() 显示绘图。

示例

#import the required modules
import seaborn as sns
import matplotlib.pyplot as plt

# The dataset are Loaded and generated
data = [10, 15, 20, 22, 25, 30, 32, 35, 40, 45, 50]

# Construct a boxplot
sns.boxplot(data=data)

# The Axes object is retrieved the Axes object
ax = plt.gca()

# Data points
for i, point in enumerate(data):
   plt.scatter(i, point, color='red', alpha=0.5)

# Customize appearance
ax.set_xticklabels([])  # Hide x-axis labels (optional)
plt.xlabel('Data')
plt.ylabel('Values')

# Display the plot
plt.show()

输出

方法 2:利用箱线图的箱形图。

在这种方法中,我们一起使用箱形图和箱线图来创建全面的可视化效果。箱形图排列每个数据点,使它们不重叠,从而提供数据集的更清晰显示。通过将箱形图与箱线图叠加,我们可以同时查看单个数据点和汇总统计数据,从而能够更深入地研究数据。当处理较大的数据集时,这种方法特别有用,在这些数据集中,重叠的数据点可能会掩盖模式和趋势。

算法

步骤如下:

步骤 1 - 导入 seaborn 和 matplotlib.pyplot。

步骤 2 - 创建或加载数据集。

步骤 3 - 使用 seaborn.swarmplot() 函数创建箱形图,提供数据集和所需的设置。

步骤 4 - 根据需要调整箱形图的外观。

步骤 5 - 使用 seaborn.boxplot() 函数,可以在箱形图上叠加箱线图。

步骤 6 - 根据需要调整箱线图的外观。

步骤 7 - 使用 matplotlib.pyplot.show() 显示绘图。

示例

#import the required modules
import seaborn as sns
import matplotlib.pyplot as plt

# The dataset is Loaded and generated
data = [10, 15, 20, 22, 25, 30, 32, 35, 40, 45, 50]

# Build a swarmplot
sns.swarmplot(data=data, color='grey')

# Customize the appearance of swarmplot
plt.xlabel('Data')
plt.ylabel('Values')

# Overlay a boxplot
sns.boxplot(data=data, width=0.2, color='white')

# Customize the appearance of the boxplot
plt.ylim(0, 60)
# Show the plot
plt.show()

输出

结论

在本文中,我们研究了两种使用 Python 中的 Seaborn 库创建带有叠加数据点的箱线图的方法。第二种方法使用箱线图的箱形图。我们通过包含单个数据点来增强可视化效果,这使我们能够更深入地了解数据集的分布。为了处理更大的数据集,我们学习了如何将箱形图与箱线图结合起来,以及如何在箱线图上叠加数据点。由于 Seaborn 与 Matplotlib 的接口,可以高度自定义绘图以满足您的特定需求。这些方法使您能够获得有洞察力的见解并通过可视化效果有说服力地呈现您的发现。

更新于:2023-07-28

826 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告