如何使用 Matplotlib 在 Python 中绘制向量?

2025 年 1 月 5 日 | 阅读 9 分钟

Matplotlib 及其功能简介

Matplotlib 仍然是最著名、最灵活的绘图库之一,您可以在 Python 中找到它。它提供了全面的工具集,用于创建静态、交互式和出版质量的图表。Matplotlib 最初由 John D. Hunter 于 2003 年创建,此后已成为 Python 科学生态系统的必要组成部分,在学术界、工业界和研究领域得到了广泛采用。

Matplotlib 的主要特点

  1. 简单易用的接口: Matplotlib 提供了一个清晰的编程接口,可以使用最小的代码复杂度创建许多图表。用户可以通过指定数据和绘图属性来快速生成绘图,例如使用 Python 语法。
  2. 高度可定制: Matplotlib 提供了广泛的自定义选项,用于调整图表外观,包括颜色、标记、线型、标签、标题、轴等。用户可以完全控制图表外观的每个方面,从而能够根据其特定需求调整可视化。
  3. 支持多种图表类型: Matplotlib 支持多种图表类型,包括折线图、散点图、条形图、直方图、饼图、轮廓图、热图、3D 图等。这种灵活性允许用户有效地可视化各种类型的数据。
  4. 出版级质量输出: Matplotlib 生成高质量的图表,适用于在学术论文、期刊、演示文稿和报告中发表。它支持导出为各种文件格式,如 PNG、PDF、SVG、EPS,允许用户轻松生成出版级图表。
  5. 与 Jupyter Notebook 集成: Matplotlib 与 Jupyter Notebook 无缝集成,在 Notebook 环境中提供交互式绘图功能。用户可以直接在 Jupyter Notebook 中创建、操作和可视化图表,从而促进交互式数据分析工作流程。
  6. 广泛的文档和社区支持: Matplotlib 提供全面的文档、教程和示例,方便用户入门和学习高级绘图技术。此外,Matplotlib 拥有活跃的用户和开发者社区,他们贡献代码、提供支持并分享最佳实践。

Matplotlib 的组成部分

Matplotlib 由几个协同工作的关键组件组成,用于创建图表。

  • Figure: 包含图表所有元素的最高级别容器。用户创建和操作 Figure 来生成具有一个或多个子图的图表。
  • Axes: Figure 中用于可视化数据的绘图区域。用户与 Axes 交互以自定义图表属性、添加数据和添加标注。
  • Artist: Matplotlib 图表的关键构件,包括线条、标记、文本、块和集合。Artist 代表构成图表的视觉元素,用户可以修改其属性来定制图表外观。

安装 Matplotlib

可以使用 pip 或 conda 等 Python 包管理器轻松安装 Matplotlib。要通过 pip 安装 Matplotlib,用户可以在其终端或命令提示符中执行以下命令。

或者,用户可以通过运行以下命令来使用 conda 安装 Matplotlib。

向量及其表示法简介

什么是向量?

在数学和物理学中,向量是一个数值对象,表示一个由大小和方向定义的量。向量在各种科学领域中无处不在,并在物理学、工程学、计算机科学和数据分析中得到广泛应用。

向量表示

向量可以表示为具有指定大小和方向的有向线段。在数学符号中,向量通常用粗体字母(例如,v)或小写字母上方的箭头(例如,→v)表示。二维(2D)空间中的向量通常包含两个分量,表示沿 x 轴和 y 轴的位移,而三维(3D)空间中的向量包含三个分量,表示沿 x 轴、y 轴和 z 轴的位移。

在 Python 中,可以使用数组或列表来表示向量。数组或列表的每个元素对应于向量沿特定轴的分量。例如,二维向量 [3, 4] 表示一个分量为 (3, 4) 的向量,而三维向量 [1, 2, 3] 表示一个分量为 (1, 2, 3) 的向量。

向量的性质

  • 大小: 向量的大小(或长度)表示向量的大小或幅度。对于二维向量,它使用勾股定理计算,对于 n 维向量,它使用欧几里得范数计算。对于二维向量 v = (x, y),大小 |v| 计算如下:∣v∣= √x2+y 同样,对于 n 维向量 v = (v₁, v₂, ..., v₁),大小 |v| 计算如下:∣v∣=√v12+v22+...+vn2
  • 方向: 向量的方向表示向量相对于参考轴的方向或角度。它通常使用角度、单位向量或沿坐标轴的分量来表示。
  • 加法和减法: 向量可以逐分量相加或相减,以生成一个结果向量。结果向量表示单个向量的组合效果。
  • 标量乘法: 向量可以乘以标量(实数),从而得到原始向量的缩放版本。标量乘法会影响向量的大小和方向。
  • 点积: 两个向量的点积(或标量积)测量一个向量相对于另一个向量的相似性或投影。它通过将向量的相应分量相乘并将结果相加来计算。
  • 叉积: 两个向量的叉积(或向量积)生成一个垂直于由原始向量定义的平面的新向量。它用于计算平行四边形的面积并确定向量之间的旋转方向。

使用 Matplotlib 绘制向量的基础知识

可视化向量对于深入了解其性质、关系和影响至关重要。Matplotlib 提供了强大的功能,用于在二维(2D)和三维(3D)空间中绘制向量。在本节中,我们将探讨使用 Matplotlib 绘制向量的基础知识,涵盖 2D 和 3D 向量的基本绘图技术。

绘制 2D 向量

要使用 Matplotlib 绘制 2D 向量,我们可以使用 quiver() 函数,该函数生成一个由表示向量的箭头组成的 2D 场。quiver() 函数需要指定向量尾部(起点)的位置以及沿 x 和 y 轴的分量。

输出

How to Plot Vectors in Python Using Matplotlib

在此示例中

我们使用 NumPy 数组定义两个 2D 向量 vector1 和 vector2。

我们使用 plt.subplots() 创建一个 Matplotlib Figure 和 Axes。

我们使用 quiver() 函数绘制向量,指定其尾部 (0, 0) 的位置以及它们各自的分量 (vector1[0], vector1[1] 和 vector2[0], vector2[1])。

points、scale_units 和 scale 等附加参数控制向量的外观。

我们设置绘图边界,以确保所有向量都在绘图区域内可见。

添加了网格线以帮助可视化,并包含图例以标记向量。

绘制 3D 向量

为了可视化 3D 向量,Matplotlib 使用 quiver() 函数提供了类似的功能。但是,在这种情况下,我们需要指定向量尾部(起点)的位置以及沿 x、y 和 z 轴的分量。

输出

How to Plot Vectors in Python Using Matplotlib

在这个例子中

我们使用 NumPy 数组定义两个 3D 向量 vector1 和 vector2。

  • 我们使用 plt.figure() 和 fig.add_subplot() 创建一个具有 3D 投影的 Matplotlib Figure 和 Axes。
  • 我们使用 quiver() 函数绘制向量,指定其尾部 (0, 0, 0) 的位置以及它们各自的分量 (vector1[0], vector1[1], vector1[2] 和 vector2[0], vector2[1], vector2[2])。
  • 与 2D 情况类似,修改了网格线、图例和绘图限制。

高级向量绘图技术

虽然向量绘图的基础知识提供了一个坚实的基础,但高级技术允许在向量表示方面进行更多自定义和复杂性。在本节中,我们将使用 Matplotlib 探讨一些高级向量绘图技术。

修改向量属性

Matplotlib 提供了多种选项来修改向量的外观,包括颜色、宽度、线型和箭头形状。通过调整这些属性,用户可以创建视觉上吸引人且富有洞察力的向量图。

输出

How to Plot Vectors in Python Using Matplotlib

在这个例子中

  • 我们定义一个 2D 向量。
  • 我们使用 quiver() 函数绘制向量,并指定自定义属性,如颜色(color='g' 表示绿色)、宽度(width=0.01)、线型(linestyle='- - ' 表示虚线)和透明度(alpha=0.5)。
  • 可以根据需要修改其他属性,例如箭头形状、箭头宽度和箭头长度。

绘制多个向量

通常,需要在同一图表上绘制多个向量以比较它们的大小、方向或关系。Matplotlib 支持在单个图表上叠加多个向量,从而实现全面的可视化。

输出

How to Plot Vectors in Python Using Matplotlib

在这个例子中

  • 我们定义一个 2D 向量列表 vectors。
  • 我们遍历向量,并使用 quiver() 函数绘制每个向量。每个向量的颜色是根据其在列表中的索引动态确定的。
  • 添加了一个图例来标记每个向量,并包含了网格线作为参考。

添加标注

标注为图表中的特定向量提供了额外的上下文或信息。Matplotlib 允许用户使用文本、箭头或其他图形元素注释向量,以增强其可解释性。

输出

How to Plot Vectors in Python Using Matplotlib

在这个例子中

  • 我们使用 quiver() 函数绘制一个 2D 向量。
  • 使用 annotate() 函数为向量添加了一个标注,指定了文本('Vector')、标注的位置(xy)和文本的位置(xytext)。此外,还添加了一个箭头来突出显示向量。
  • 像以前一样添加了网格线和图例。

结论

使用 Matplotlib 在 Python 中绘制向量为在二维(2D)和三维(3D)空间中可视化基于向量的数据提供了一个强大的框架。通过理解向量的基本属性,如大小、方向和分量,用户可以有效地表示和分析各种科学、工程和计算环境中的向量。Matplotlib 的 quiver() 函数是绘制向量的一个多功能工具,提供了自定义选项,包括颜色、宽度和线型。高级可视化技术,如绘制多个向量、自定义向量属性和添加标注,增强了向量图的清晰度和可解释性。