- Matplotlib 基础
- Matplotlib - 首页
- Matplotlib - 简介
- Matplotlib - 与 Seaborn 的比较
- Matplotlib - 环境设置
- Matplotlib - Anaconda 发行版
- Matplotlib - Jupyter Notebook
- Matplotlib - Pyplot API
- Matplotlib - 简单绘图
- Matplotlib - 保存图表
- Matplotlib - 标记
- Matplotlib - 图表
- Matplotlib - 样式
- Matplotlib - 图例
- Matplotlib - 颜色
- Matplotlib - 颜色图
- Matplotlib - 颜色图归一化
- Matplotlib - 选择颜色图
- Matplotlib - 颜色条
- Matplotlib - 文本
- Matplotlib - 文本属性
- Matplotlib - 子图标题
- Matplotlib - 图片
- Matplotlib - 图片蒙版
- Matplotlib - 注释
- Matplotlib - 箭头
- Matplotlib - 字体
- Matplotlib - 什么是字体?
- 全局设置字体属性
- Matplotlib - 字体索引
- Matplotlib - 字体属性
- Matplotlib - 比例尺
- Matplotlib - 线性与对数比例尺
- Matplotlib - 对称对数与 Logit 比例尺
- Matplotlib - LaTeX
- Matplotlib - 什么是 LaTeX?
- Matplotlib - 用于数学表达式的 LaTeX
- Matplotlib - 注释中的 LaTeX 文本格式
- Matplotlib - PostScript
- 启用注释中的 LaTeX 渲染
- Matplotlib - 数学表达式
- Matplotlib - 动画
- Matplotlib - 图形对象
- Matplotlib - 使用 Cycler 进行样式设置
- Matplotlib - 路径
- Matplotlib - 路径效果
- Matplotlib - 坐标变换
- Matplotlib - 刻度和刻度标签
- Matplotlib - 弧度刻度
- Matplotlib - 日期刻度
- Matplotlib - 刻度格式化器
- Matplotlib - 刻度定位器
- Matplotlib - 基本单位
- Matplotlib - 自动缩放
- Matplotlib - 反转坐标轴
- Matplotlib - 对数坐标轴
- Matplotlib - Symlog
- Matplotlib - 单位处理
- Matplotlib - 带单位的椭圆
- Matplotlib - 脊柱
- Matplotlib - 坐标轴范围
- Matplotlib - 坐标轴比例尺
- Matplotlib - 坐标轴刻度
- Matplotlib - 格式化坐标轴
- Matplotlib - Axes 类
- Matplotlib - 双坐标轴
- Matplotlib - Figure 类
- Matplotlib - 多图
- Matplotlib - 网格
- Matplotlib - 面向对象接口
- Matplotlib - PyLab 模块
- Matplotlib - Subplots() 函数
- Matplotlib - Subplot2grid() 函数
- Matplotlib - 固定位置的图形对象
- Matplotlib - 手动等值线
- Matplotlib - 坐标报告
- Matplotlib - AGG 滤镜
- Matplotlib - 带状箱线图
- Matplotlib - 填充螺旋线
- Matplotlib - Findobj 演示
- Matplotlib - 超链接
- Matplotlib - 图片缩略图
- Matplotlib - 使用关键字进行绘图
- Matplotlib - 创建 Logo
- Matplotlib - 多页 PDF
- Matplotlib - 多进程
- Matplotlib - 打印标准输出
- Matplotlib - 复合路径
- Matplotlib - Sankey 类
- Matplotlib - MRI 与 EEG
- Matplotlib - 样式表
- Matplotlib - 背景颜色
- Matplotlib - Basemap
- Matplotlib 事件处理
- Matplotlib - 事件处理
- Matplotlib - 关闭事件
- Matplotlib - 鼠标移动
- Matplotlib - 点击事件
- Matplotlib - 滚动事件
- Matplotlib - 按键事件
- Matplotlib - 选择事件
- Matplotlib - 透视镜
- Matplotlib - 路径编辑器
- Matplotlib - 多边形编辑器
- Matplotlib - 定时器
- Matplotlib - Viewlims
- Matplotlib - 缩放窗口
- Matplotlib 小部件
- Matplotlib - 游标小部件
- Matplotlib - 带注释的游标
- Matplotlib - 按钮小部件
- Matplotlib - 复选框
- Matplotlib - 套索选择器
- Matplotlib - 菜单小部件
- Matplotlib - 鼠标光标
- Matplotlib - 多光标
- Matplotlib - 多边形选择器
- Matplotlib - 单选按钮
- Matplotlib - RangeSlider
- Matplotlib - 矩形选择器
- Matplotlib - 椭圆选择器
- Matplotlib - 滑块小部件
- Matplotlib - 范围选择器
- Matplotlib - 文本框
- Matplotlib 绘图
- Matplotlib - 条形图
- Matplotlib - 直方图
- Matplotlib - 饼图
- Matplotlib - 散点图
- Matplotlib - 箱线图
- Matplotlib - 小提琴图
- Matplotlib - 等高线图
- Matplotlib - 3D 绘图
- Matplotlib - 3D 等高线
- Matplotlib - 3D 线框图
- Matplotlib - 3D 曲面图
- Matplotlib - 矢羽图
- Matplotlib 有用资源
- Matplotlib - 快速指南
- Matplotlib - 有用资源
- Matplotlib - 讨论
Matplotlib - 箱线图
箱线图以图形方式表示数据集的分布。它显示数据集的汇总统计数据,包括最小值、第一四分位数 (Q1)、中位数 (Q2)、第三四分位数 (Q3) 和最大值。箱体代表第一四分位数 (Q1) 和第三四分位数 (Q3) 之间的四分位数范围 (IQR),而须线则从箱体延伸到最小值和最大值。如果存在异常值,则可能会显示为须线以外的单个点。
假设您有来自三个班级的学生考试成绩。箱线图是一种显示这些分数分布的方式 -
最小值和最大值 - 最小和最大的分数显示为图表的末端。
四分位数 (Q1、Q2、Q3) - 分数被分成四部分。中间分数是中位数 (Q2)。中位数以下的分数是第一四分位数 (Q1),中位数以上的分数是第三四分位数 (Q3)。它可以帮助您查看大多数分数的位置。
四分位数范围 (IQR) - Q1 和 Q3 之间的范围称为四分位数范围。
箱体 - 中间的箱体代表四分位数范围。因此,它显示了分数的一半所在的位置。
须线 - 从箱体延伸到最小和最大分数的线(须线)有助于您查看分数的分布情况。
异常值 - 如果有任何分数远高于或低于其余分数,则它们可能会显示为须线以外的点。这些就像突出的分数。
Matplotlib 中的箱线图
我们可以使用 `boxplot()` 函数在 Matplotlib 中创建箱线图。此函数允许我们自定义箱线图的外观,例如更改须线长度、添加凹口以及指定异常值的显示。
`boxplot()` 函数
Matplotlib 中的 `boxplot()` 函数接受一个或多个数据集作为输入,并为每个数据集生成一个箱线图。
以下是 Matplotlib 中 `boxplot()` 函数的语法 -
语法
plt.boxplot(x, notch=None, patch_artist=None, widths=None, labels=None, ...)
其中,
x 是要创建箱线图的数据集或数据集列表。
如果notch(可选)为 True,则创建垂直箱线图;如果为 False,则创建水平箱线图。
如果patch_artist(可选)为 True,则用颜色填充箱体。
widths(可选)代表箱体的宽度。
labels(可选)为每个数据集设置标签,在绘制多个箱线图时非常有用。
这些只是一些参数;还有更多可选参数可用于自定义。
带凹口的水平箱线图
我们可以创建一个带凹口的水平箱线图,以水平方向显示数据集的分布。它包括中位数线周围的凹口,提供了对中位数值周围不确定性的视觉估计。
示例
在下面的示例中,我们正在创建一个带凹口的水平箱线图,用于三个数据集,其中每个箱体表示沿 y 轴类别的值集 -
import matplotlib.pyplot as plt # Data data = [[1, 2, 3, 4, 5], [3, 6, 8, 10, 12], [5, 10, 15, 20, 25]] # Creating a horizontal box plot with notches plt.boxplot(data, vert=False, notch=True) plt.title('Horizontal Box Plot with Notches') plt.xlabel('Values') plt.ylabel('Categories') plt.show()
输出
执行上述代码后,我们将得到以下输出 -
带自定义颜色的箱线图
我们可以创建一个带自定义颜色的箱线图,以不同的颜色图形化地表示数据以填充箱体。每个箱体代表一个类别中值的分布,通过添加自定义颜色,我们引入了风格化的触感,使类别之间的区分更容易。
示例
在这里,我们通过用自定义颜色(即天蓝色)填充箱体来增强箱线图 -
import matplotlib.pyplot as plt data = [[1, 2, 3, 4, 5], [3, 6, 8, 10, 12], [5, 10, 15, 20, 25]] # Creating a box plot with custom colors plt.boxplot(data, patch_artist=True, boxprops=dict(facecolor='skyblue')) plt.title('Box Plot with Custom Colors') plt.xlabel('Categories') plt.ylabel('Values') plt.show()
输出
以下是上述代码的输出 -
分组箱线图
我们可以创建一个分组箱线图来并排比较多个组的分布。每个组都有自己的一组箱体,其中每个箱体代表该组中值的分布。
示例
现在,我们正在创建一个分组箱线图来比较三个不同班级 (A、B 和 C) 的学生考试成绩。每个箱体代表一个班级中分数的分布,使我们能够轻松观察和比较三个班级的集中趋势、离散程度和潜在异常值 -
import matplotlib.pyplot as plt import numpy as np class_A_scores = [75, 80, 85, 90, 95] class_B_scores = [70, 75, 80, 85, 90] class_C_scores = [65, 70, 75, 80, 85] # Creating a grouped box plot plt.boxplot([class_A_scores, class_B_scores, class_C_scores], labels=['Class A', 'Class B', 'Class C']) plt.title('Exam Scores by Class') plt.xlabel('Classes') plt.ylabel('Scores') plt.show()
输出
执行上述代码后,我们将得到以下输出 -
带异常值的箱线图
带异常值的箱线图是数据的图形表示,其中包含有关数据集中极值的其他信息。在标准箱线图中,我们将异常值(与大多数数据显着不同的数据点)表示为超出从箱体延伸的“须线”的单个点。
此图有助于识别可能对数据的整体分布产生重大影响的异常值。
示例
在下面的示例中,我们正在创建一个箱线图,该图直观地表示每种产品的销售分布,而异常值则突出显示销售额异常高或低的月份 -
import matplotlib.pyplot as plt import numpy as np # Data for monthly sales product_A_sales = [100, 110, 95, 105, 115, 90, 120, 130, 80, 125, 150, 200] product_B_sales = [90, 105, 100, 98, 102, 105, 110, 95, 112, 88, 115, 250] product_C_sales = [80, 85, 90, 78, 82, 85, 88, 92, 75, 85, 200, 95] # Introducing outliers product_A_sales.extend([300, 80]) product_B_sales.extend([50, 300]) product_C_sales.extend([70, 250]) # Creating a box plot with outliers plt.boxplot([product_A_sales, product_B_sales, product_C_sales], sym='o') plt.title('Monthly Sales Performance by Product with Outliers') plt.xlabel('Products') plt.ylabel('Sales') plt.show()
输出
执行上述代码后,我们将得到以下输出 -