购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.8 用箭头图绘制向量场

向量场是一种在空间中为每个点分配向量的函数,即在空间上定义的向量值函数。这些在微分方程(方程组)的研究中尤其常见,向量场通常出现在方程的右侧(更详细的信息,请参阅第3章中的例子)。因此,通过可视化向量场,我们可以更好地理解函数在空间中的演变。现在,我们只需要使用箭头图(quiver plot)来绘制向量场。箭头图接受一组 x y 坐标及一组d x 和d y 向量,并绘制一幅图,其中每个点上都有一个指向(d x , d y )方向的箭头,箭头的长度即该向量的长度(希望在实际创建图形时,这些箭头会更加清晰)。

2.8.1 准备工作

和往常一样,我们导入Matplotlib的pyplot接口,将其命名为别名plt。在开始之前,我们需要定义一个函数,该函数接受一个点并生成一个向量。我们稍后将使用它来生成d x 和d y 数据,然后将其传递给绘图函数。

在这个示例中,我们将绘制以下向量场:

f ( x , y ) = (exp(-2( x 2 + y 2 ))( x+y ),exp(-2( x 2 + y 2 ))( x-y ))

在这个例子中,我们将在-1≤ x ≤1且-1≤ y ≤1的区域上绘制向量场。

2.8.2 实现方法

以下步骤展示了如何在指定的区域上可视化上述向量场。

1.我们需要定义一个Python函数,用于在各个点计算向量场:

2.我们需要创建覆盖该区域的网格点。为此,我们首先创建一个值在-1和1之间的临时linspace例程。然后,我们使用meshgrid生成网格点:

3.使用我们定义的函数生成dx和dy值,这些值描述了每个网格点的向量:

4.现在,我们可以创建一个新图形和坐标轴,并使用quiver方法生成图形:

结果如图2.10所示。

图2.10 使用箭头图对向量场进行可视化

在图2.10中,我们可以看到(d x , d y )值表示为( x , y )坐标处的箭头。箭头的大小由向量场的幅度决定。在原点处,向量场的(d x , d y )=(0,0),因此原点附近的箭头非常小。

2.8.3 原理解析

在这个示例中我们使用了一个数学构造,而不是真实世界中可能出现的实际数据。对于这种特殊情况,箭头描述了某个量随我们指定的向量场流动的演化过程。

网格中的每个点都是箭头的基点。箭头的方向由相应的(d x , d y )值给定,而箭头的长度按长度进行归一化(因此,具有较小分量的向量(d x , d y )会产生较短的箭头)。这可以通过更改scale关键字参数进行自定义,图形的许多其他方面也可以自定义。

2.8.4 更多内容

如果要绘制沿着向量场运动的一组轨迹,可以使用streamplot方法。这将绘制从不同点开始的轨迹,以指示域的不同部分的总体流动。每条流线都有一个箭头表示流动的方向。例如,图2.11显示了本例中使用向量场的streamplot方法得到的结果。

图2.11 示例向量场描述的轨迹图

在另一种情况下,你可能在多个坐标点处(比如在地图上)有风速(或类似的量)的数据,并且希望以天气图的标准样式绘制这些数据。这时,我们可以使用barbs绘图方法,其参数类似于quiver方法。 EgBEyG2UzC50UL+MqGLBDZr4v39u8BDPuv4Ox3MyW6tXSzkg3KiN2PSQzZ9U4+Zp

点击中间区域
呼出菜单
上一章
目录
下一章
×

打开