使用 Seaborn 在 Python 中绘制水平箱线图和点


箱线图是用于数据集数据可视化的最流行的工具之一,主要使用名为 Seaborn 的 Python 库创建,该库提供了一种简单而强大的方法来创建水平和垂直箱线图以及其他类型的可视化。

在本文中,我们将重点介绍如何在 Python 中使用 Seaborn 创建带有点的水平箱线图。

什么是箱线图?

首先,让我们定义什么是箱线图。箱线图是数据集的图形表示,它使用异常值、四分位数和中位数来传达数据集中数据的分布情况。图中间的框表示数据的四分位距 (IQR),须线延伸到距中位数一定距离内的最小值和最大值。异常值表示为须线外的单个点。

使用 Seaborn 绘制带有点的水平箱线图

让我们开始学习如何在 Python 中使用 Seaborn 创建带有点的水平箱线图。我们将使用 Seaborn 库中的名为“tips”的数据集,其中包含的信息包含总账单金额和餐厅一周中的日期等列。

以下是我们将遵循的步骤,以便使用 Seaborn 在 Python 中创建带有点的水平箱线图:

  • 导入所有必要的库,如 seaborn 和 matplotlib。

  • 使用 sns.load_dataset() 函数加载“tips”数据集:

  • 然后,我们可以使用 sns.boxplot() 函数创建水平箱线图。

  • 我们将 x 和 y 变量分别设置为“total_bill”和“day”,以便在 x 轴上绘制总账单金额,在 y 轴上绘制一周中的日期。

  • 我们还将 whis 参数设置为 [0, 100] 以显示数据的全部范围,并使用 width 和 fliersize 参数调整箱线图的宽度和异常值的大小。

  • 最后,我们将 orient 参数设置为“h”以创建水平箱线图。

  • 接下来,我们可以使用 sns.swarmplot() 函数将单个数据点添加到图中。

  • 我们再次将 x 和 y 变量设置为“total_bill”和“day”,并使用 size 和 color 参数调整点的尺寸和颜色。

  • 我们还将 orient 参数设置为“h”以创建水平 swarm 图。

  • 最后,我们使用标准的 Matplotlib 函数 plt.title()、plt.xlabel() 和 plt.ylabel() 为图添加标题和轴标签。

  • 然后,我们可以使用 plt.show() 函数显示图。

示例

import seaborn as snsb
import matplotlib.pyplot as pltt

# Load example dataset
tips_df = snsb.load_dataset("tips")

# Create horizontal boxplot with points
snsb.boxplot(x="total_bill", y="day", data=tips_df, whis=[0, 100], width=.6, fliersize=5, orient="h")
snsb.swarmplot(x="total_bill", y="day", data=tips_df, color=".2", size=3, orient="h")

# Add title and axis labels
pltt.title("Total Bill by Day")
pltt.xlabel("Total Bill ($)")
pltt.ylabel("Day of Week")

# Show plot
pltt.show()

输出

自定义水平箱线图的程序

import seaborn as snss
import matplotlib.pyplot as pltt

# Load example dataset
tips_df = snss.load_dataset("tips")

# Set style and color palette
snss.set_style("whitegrid")
snss.set_palette("husl")

# Create horizontal boxplot with points
snss.boxplot(x="total_bill", y="day", data=tips_df, whis=[0, 100], width=.6, fliersize=5, orient="h")
snss.swarmplot(x="total_bill", y="day", data=tips_df, color="black", size=4, orient="h")

# Customize plot appearance
pltt.title("Total Bill by Day", fontsize=14, fontweight="bold")
pltt.xlabel("Total Bill ($)", fontsize=12)
pltt.ylabel("Day of Week", fontsize=12)
pltt.xticks(fontsize=10)
pltt.yticks(fontsize=10)

# Adjust plot dimensions
pltt.figure(figsize=(8, 6))

# Show plot
pltt.show()

输出

  • 在上面的自定义程序中,我们首先导入必要的库,包括 Seaborn 和 Matplotlib。

  • 使用 Seaborn 中的 sns.load_dataset() 函数加载名为“tips”的示例数据集。

  • 通过使用 sns.set_style() 将样式设置为“whitegrid”来自定义图的外观。此外,我们使用 sns.set_palette() 将调色板设置为“husl”。

  • 使用 sns.boxplot() 创建水平箱线图,分别指定 x 和 y 变量为“total_bill”和“day”。

  • 我们调整了 whis、width 和 fliersize 等各种参数来自定义箱线图的外观。

  • 为了添加单个数据点,我们使用 sns.swarmplot() 并自定义其颜色、大小和方向。

  • 为了进一步自定义图的外观,我们使用 Matplotlib 中的 plt.title()、plt.xlabel() 和 plt.ylabel() 函数修改标题、x 轴标签和 y 轴标签。

  • 我们还使用字体大小调整标题、标签和刻度的字体大小。

  • 此外,我们可以通过指定图形大小并将其作为元组传递给 plt.figure() 来调整图形的尺寸。

  • 最后,我们使用 plt.show() 显示带有点的自定义水平箱线图。

结论

总之,使用 Seaborn 在 Python 中创建带有点的水平箱线图是数据可视化、数据分布和探索不同变量之间关系的重要技术。我们使用了 seaborn 的 boxplot() 和 swarmplot() 函数来创建视觉上吸引人的水平箱线图,这些图描绘了关键的统计量度,如中位数、异常值和四分位数。

更新于: 2023-07-24

590 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告