Python 中的 Joint Plot

17 Mar 2025 | 6 分钟阅读

联合图(joint plot)是一种理解两个变量之间的关系以及每个变量的个体分布的方式。联合图主要由三个独立的图组成,其中,中间的图用于查看 x 和 y 之间的关系。因此,这个区域将提供联合分布的信息,而剩下的两个区域将提供 x 轴和 y 轴的边缘分布。

语法

参数

  • x,y: 指定 x 轴和 y 轴的变量。
  • data: 输入数据集。
  • kind: 用于绘制图表的协议
  • color: 用于设置图表元素的颜色的参数。
  • space: 表示联合分布和边缘分布之间的空间。
  • xlim, ylim: 表示 x 轴和 y 轴的限制。

示例

前面,我们讨论了由 3 个独立图组成的联合图。在这三个图中的一个图中,显示了二元图,说明因变量 (Y) 与自变量 (X) 的区别。

另一个图水平放置在二元图的顶部,显示因变量 (Y) 的分布。将单变量图和二元图放在同一个框架中也很有益。

这是因为单变量图主要关注一个变量,描述、总结并显示我们数据中的任何模式。二元图将显示两个变量之间的关系并表示它们关系的强度。

Seaborn 库中的 `joint plot()` 函数将默认创建散点图,并在图的顶部和右边距显示两个直方图。

让我们创建 "tips" 数据集,并将列数据传递给 `jointplot()` 函数进行分析。

使用 Jointplot() 函数创建联合图

输出

Joint Plot in Python

上图显示了一个散点图,在图的边缘有两个直方图。如果我们观察散点图,'total_bill' 和 'tip' 列之间存在正相关关系,因为一个变量的值增加时,另一个变量的值也会增加。由于图中的点比较分散,所以关系的强度会显得适中。边缘直方图都是右偏的,因为大多数值集中在分布的左侧,而右侧较长。异常值表示与其余数据值相距一段距离的数据点,并且在图上可以看到散点图和直方图中的异常值。

我们还可以为散点图添加颜色维度。

带颜色维度的散点图

上图通过将 "hue" 参数设置为 "smoker" 列,以不同的颜色显示吸烟者和非吸烟者的数据点。关于边缘图,在两个边缘上绘制的是密度图,而不是直方图,它们显示了 hue 变量两个级别的不同数据分布。

联合图中的核密度图

联合图默认将创建散点图和两个边缘直方图。如果我们只需要不同的图表,可以通过将 'kind' 参数设置为 'scatter'、'kde'、'hex' 等来在主图上显示。在上一个函数中,'kind' 参数设置为 'kde',以便联合图在主图上显示二元密度曲线,在边缘显示单变量密度曲线。我们还注意到,hue 变量两个级别的密度曲线的绘制方式不同。

回归线

回归线或最佳拟合线将直观地呈现因变量与一个或多个自变量之间的关系。回归线是使用数学方程计算的,通过使用这个方程,我们可以预测不同变量值的因变量。

Seaborn.jointplot() 方法

Seaborn 是一个 Python 数据可视化库,它基于 **matplotlib**。它提供了一个高级接口,用于绘制美观且信息丰富的统计图形。Seaborn 有助于解决 matplotlib 面临的两个主要问题,这两个问题是:

  1. 默认的 matplotlib 参数
  2. 处理数据帧

Seaborn 能够补充和扩展 matplotlib,学习曲线是正常的。如果我们了解 matplotlib,就可以轻松理解 seaborn 的概念。

seaborn.jointplot()

众所周知,seaborn 是一个使用 matplotlib 的库,它主要用于绘制图形。它用于可视化随机分布。

安装 Seaborn

如果我们在系统上安装了 Python 和 PIP,请使用以下命令进行安装。

如果我们使用 Jupyter,则使用以下命令安装 Seaborn。

Distplots

Distplot 是分布图的缩写,它接受数组作为输入;然后,它会根据数组中点的分布绘制曲线。

导入 Matplotlib

使用以下语句将 Matplotlib 模块的 pyplot 对象导入我们的代码。

导入 Seaborn

我们可以使用以下语句将 seaborn 模块导入我们的代码。

绘制 Distplot

让我们举例说明如何绘制 Distplot。

输出

Joint Plot in Python

我们也可以绘制不带直方图的 distplot。

绘制不带直方图的 Distplot

我们将通过一个例子来讨论这一点。

输出

Joint Plot in Python

Seaborn 中的不同图表类别

图表主要用于检查变量之间的关系。这些变量可以是数值型的,也可以是类别型的,如组、类或部门。Seaborn 将图表分为许多类别,如下所示:

  • 关系图 (Relational plots): 关系图用于理解两个变量之间的关系。
  • 类别图 (Categorical plots): 类别图处理类别变量以及它们的显示方式。
  • 分布图 (Distribution plots): 分布图用于检查单变量和二变量的分布。
  • 回归图 (Regression plots): Seaborn 中的回归图主要用于添加一个视觉指南,这有助于在数据分析期间理解数据集中的模式。
  • 矩阵图 (Matrix plots): 矩阵图是一系列散点图。
  • 多图网格 (Multi-plot grids): 这有助于在数据集的多个子集上绘制属于同一图表的实例。

安装 Seaborn

有两种环境:Python 环境和 Anaconda 环境。

对于 Python 环境

对于 Anaconda 环境

依赖关系

  1. Python 3.6+
  2. numpy (>=1.13.3)
  3. scipy (>=1.0.10)
  4. pandas(>=0.22.0)
  5. matplotlib(>=2.1.2)
  6. statsmodel(>=0.8.0)

使用 Seaborn 绘制一些基本图表

分布图 (Dist plot)

Seaborn 的 dist plot 用于绘制直方图,并包含 kdeplot 和 rugplot 等变体。

分布图程序

输出

Joint Plot in Python

线图 (Line Plot)

线图是 seaborn 库中主要和基本的图表。线图主要用于以时间序列的形式可视化数据,即连续地可视化数据。

线图程序

输出

Joint Plot in Python

Lmplot

这是基本图,它将显示一条线,代表二维空间中的数据点的线性回归模型,x 和 y 分别设置为水平轴和垂直轴。

Lmplot 程序

输出

Joint Plot in Python

Seaborn 的特点

Seaborn 构建在 Python 的核心可视化库 matplotlib 之上。它作为补充,而不是替代。让我们看看与它们相关的特点。

  1. 这些用于为 matlplotlib 图形设置样式内置主题。
  2. 它用于可视化单变量和二变量数据。
  3. 它用于可视化线性回归模型并进行拟合。
  4. 它用于绘制统计时间序列数据。
  5. 它能很好地与 NumPy 和 Pandas 数据结构配合使用。
  6. 它用于为 matplotlib 图形设置样式内置主题。