在 Python 中绘制多个方框图:可视化数据分布
在分析数据时,经常需要一目了然地比较不同类别或组群的分布情况。 最有效的方法之一是使用 Python 绘制多个方框图

方框图对于总结数据的分布和中心倾向非常有用,Seaborn 库使绘制方框图变得简单。在这篇文章中,我们将使用 结合方框图和条带图,直观显示数据分布情况让我们来学习一下如何做到这一点。
什么是 Boxplot 和 Stripplot?
1. 方框图
- 定义:方框图:直观表示数据分布和中心(中位数、四分位数)的方框图。
- 主要特点:
- 方框代表四分位数间距(IQR)。
- 辐线表示超出 IQR 范围的数值。
- 异常值显示为单个点。
- 杠杆作用:用于识别数据的中心趋势和分散性。
2. Stripplot
- 定义:散点图:用点表示数据中的各个值。
- 主要特点:
- 方框图显示数据的分布情况,而条纹图则显示每个数据点的确切位置。
- 与 Boxplot 一起使用时 数据分布和个体值可同时进行可视化。
绘制多个 Python 方框图
下面是一个使用 Python 的 Seaborn 库创建一个 按星期分列的数据总量它还结合了 Stripplot,使每个数据点一目了然。
代码块
import seaborn as sns
import matplotlib.pyplot as plt
加载 # 数据
tips = sns.load_dataset('tips')
合并 # 方框图和条带图
plt.figure(figsize=(10, 6))
sns.boxplot(x='day', y='total_bill', data=tips, palette='Set2') 创建 # 方框图
sns.stripplot(x='day', y='total_bill', data=tips, color='.25') 生成 # 条纹图
设计 # 图表的样式
plt.title("Drawing Multiple Boxplots in Python: Total Bill by Day", fontsize=15)
plt.xlabel("Day of the Week", fontsize=12)
plt.ylabel("Total Bill ($)", fontsize=12)
输出 # 图表
plt.tight_layout()
plt.show()
代码简介
- 加载数据
sns.load_dataset('tips')检索餐厅小费数据。
- 创建方框图
sns.boxplot()一周内每天的总金额 (账单总额) 将数据可视化。
- 组合条带
sns.stripplot()在方框图上叠加单个数据点。
- 图表样式
- 添加标题和坐标轴标签,使图表更易于阅读。
方框图和条带图相结合的优势
- 方框图的作用
- 清楚地显示一周中每天的数据分布和中心倾向(中位数、IQR)。
- 直观地突出显示数据中的异常值。
- 带状地块的作用
- 方框图是对汇总数据分布的补充,可让您查看单个数据点。
- 帮助您更精确地分析数据。
- 综合效果
- 将这两个图结合起来,您就可以同时直观地看到数据的整体分布情况和单个数据之间的关系。
从图表中获得启示

- 按星期分列的分布差异
- 周末(周六和周日)的总金额中位数高于一周中的其他日子。
- 检查异常值
- 星期六是个例外,总金额超过了 $50。
- 查看个人数据
- 借助条纹图,您可以看到一周中每天的数据实际是如何分布的。
总结
在本帖中,我们将使用 绘制多个 Python 方框图并合并条带图我们学会了如何更丰富地可视化数据。
技巧和窍门
- 方框图:用于快速查看数据的总体分布情况。
- 条带图:合并单个数据点,以便进一步分析。
- 适用于多个数据集,以明确不同类别之间的比较。
尝试自己运行代码,将该方法应用到自己的数据中,发现新的见解! 22 年过去了:巴菲特债券投资背后的秘密(附 Python 条形图) 查看这篇文章,学习 Python 可视化基础知识!
# 代码详解
1. 加载库和数据
import seaborn as sns import matplotlib.pyplot as plt tips = sns.load_dataset('tips')
- Seaborn:用于生成方框图和条形图的库。
- Matplotlib:有助于图形样式和输出。
秘诀数据集样本数据:样本数据包含一家餐厅一周内每天的总消费额数据。2. 绘制方框图
sns.boxplot(x='day', y='total_bill', data=tips, palette='Set2')
x='day设置 X 轴上的星期数据。y='账单总额设置 Y 轴上的总量数据。调色板='Set2'设置图形颜色:使用 Seaborn 的 Set2 调色板设置图形颜色。3. 绘制带状图
sns.stripplot(x='day', y='total_bill', data=tips, color='.25')
color='.25'颜色:将点的颜色设置为浅灰色,以便与方框图形成对比。- 它叠加在方框图之上,使数据点更加直观。
4 图形样式和输出
plt.title("Drawing Multiple Boxplots in Python: Total Bill by Day", fontsize=15) plt.xlabel("Day of the Week", fontsize=12) plt.ylabel("Total Bill ($)", fontsize=12) plt.tight_layout() plt.show()
plt.title()添加图表标题,明确表达可视化的目的。tight_layout():自动调整图形的边距,使每个元素不会重叠。
#Tips 数据说明
秘诀该数据集是 Seaborn 库提供的一个示例数据集,其中包含餐厅顾客支付的金额、小费和一些相关信息。这些数据经常用于数据分析和可视化练习,也用于绘制多个 Python 方框图。数据集概览
列名 说明 数据类型 账单总额支付总额(美元) 数值(浮点数) 温馨提示小费金额(美元) 数值(浮点数) 性别客户性别("男"、"女) 分类(字符串) 吸烟者您是否吸烟("是"、"否) 分类(字符串) 天参观日("周四"、"周五"、"周六"、"周日) 分类(字符串) 时间参观时间("午餐"、"晚餐) 分类(字符串) 尺寸就餐人数 数值(int) 数据集说明
1. 账单总额
- 客户支付的总金额。
- 单位为美元($),包括小费和餐饮费。
- 方框图使用这一栏来直观显示一周内各天的总金额分布情况。
2. 提示
- 顾客支付的小费金额。
- 它通常通过计算小费占总额的百分比来分析小费文化。
3. 性
- 客户的性别。
- 数据分为 "男性 "和 "女性"。
- 您可以比较男女之间小费数额的差异,或按性别分析消费模式。
4. 吸烟者
- 表示顾客是否吸烟。
- 这些顾客分为吸烟顾客("是")和不吸烟顾客("否"),这有助于分析吸烟状况是否会影响小费金额或消费模式。
5. 日
- 客户访问的星期。
- 星期四"、"星期五"、"星期六 "和 "星期日"。
- 您可以按一周内的不同日期分析总金额或小费金额的差异。
6. 时间
- 表示访问时间是 "午餐 "还是 "晚餐"。
- 这有助于比较不同时期的消费模式或分析小费率的差异。
7. 尺寸
- 用餐人数。
- 用于分析小组人数对总金额或小费金额的影响。





