在这篇文章中,我们将学习如何在 Matplotlib 中绘制平行坐标图。首先,让我们讨论一些相关的基本概念:
- Matplotlib 是 Python 中一个极其强大的可视化库,主要用于数组的二维绘图。Matplotlib 也是一个基于 NumPy 数组构建的多平台数据可视化库,旨在与更广泛的 SciPy 栈协同工作。它由 John Hunter 于 2002 年引入。
- 可视化最大的好处之一是,它允许我们通过易于理解的视觉图像来直观地访问大量信息。Matplotlib 包含多种图表类型,如折线图、柱状图、散点图、直方图等。
- 平行坐标(Parallel Coordinates) 是一种探索多维数据在分类响应上分布情况的方法,并以此观察特征中是否存在任何趋势。
- 使用传统的绘图类型,通常可以相对直观地查看二维和三维数据。即使是四维数据,我们也常常能找到展示信息的办法。
在 Pandas 中实现平行坐标的方法
在 Pandas 中有多种实现平行坐标的方法。在这里,我们讨论一些在 Pandas 中用于绘制平行坐标的常用方法,如下所示:
- 简单的平行坐标图
- 包含多条线和多轴的平行坐标图
- 基于多维数据的平行坐标图
- 鸢尾花数据集(Iris Dataset)的平行坐标图
- 使用 plotly.graph_objects 绘制平行坐标
首先,我们需要遵循以下步骤在 Pandas 中绘制平行坐标。
所需步骤
- 导入库
- 创建/加载数据
- 创建子图,并将共享 y 轴设置为 False
- 绘制所有子图
- 设置 x 轴限制以显示 x 轴标签
- 将子图间的宽度间距设置为零
- 展示图表以查看最终输出
简单的平行坐标图
在这里,我们将通过应用上述步骤来讨论一些示例。在这些示例中,我们将处理线性和多维度的虚拟数据。
在这个示例中,代码使用 Matplotlib 创建了一个包含两个并排子图的图形。它在两个子图中绘制了相同的数据(INLINECODE87137972 和 INLINECODE0e74d807)。子图的 x 轴限制设置不同,第一个子图仅显示数据的前三个点,第二个子图显示后三个点。
Python3
CODEBLOCK_b64948b4
输出:
!Simple Parallel Coordinate Plot
包含多条线和多轴的平行坐标图
在这个示例中,代码使用 Matplotlib 库创建了一行 8 个子图,每个子图显示两条线图(y1 和 y2),对应 x 值使用不同的线样式(‘g-.‘ 和 ‘r–‘)。每个子图的 x 轴限制基于 ‘x‘ 列表中连续的元素对进行设置。子图之间的宽度间距为零,最后显示图形。
Python3
CODEBLOCK_cbb23e15
输出 :
!Parallel Coordinate Plot with Multiple Lines and Multiple Axes
基于多维数据的平行坐标图
在这个示例中,代码创建了四个子图,包含不同的数据系列,并为每个子图设置了单独的 x 轴限制。数据由应用于数组 ‘x‘ 的各种函数组成。子图显示了不同的数据系列,并且 ‘plt.subplots_adjust(wspace=0)‘ 消除了子图之间的水平间距。
Python3
CODEBLOCK_30892543
输出 :
!Parallel Coordinate Plot Over Multi-dimensions Data
针对 Iris 数据集的平行坐标图
在这个示例中,我们将在 Iris 数据集上绘制平行坐标图。Iris 数据集包含三种鸢尾花,每种 50 个样本,以及每个样本的四个属性(萼片长度、萼片宽度、花瓣长度、花瓣长度)。
Python3
CODEBLOCK_b5075018
输出 :
!Parallel Coordinates Plot For Iris Dataset
使用 plotly.graph_objects 绘制平行坐标
Plotly 提供了一个交互式的平行坐标图。在这里,我们将使用 plotly.graph_objects 库来实现它。这允许我们通过鼠标悬停来查看数据,具有更好的交互性。
Python3
CODEBLOCK_9e8c4dd2
输出 :