# 绘制矢量场流线图

# 矢量场流线图可以表现矢量场的流态,常见于科学和自然学科中的磁场、万有引力和流体运动等场景。例如,某磁场的流线图如图 8-3 所示。

# 由图 8-3 可知,矢量场流线图包含多条带有箭头的线条,其中线条的长度表示矢量场的强度,箭头的方向表示矢量场的方向。此外,矢量场的强度也可以用线条的密度来表示。
在 matplotlib 中,pyplot 可以使用 streamplot() 函数绘制矢量场流线图。streamplot() 函数的语法格式如下所示 :

streamplot(x, y, u, v, density=1, linewidth=None, col=None, cmap=None,
           norm=None, arrowsize=1, arrowstyle='-|>', minlength=O.1,
           transform=None, zorder=None, start_points=None, maxlength=4.0,
           integration_directicn='both', *, data=None)

# 该函数常用参数的含义如下。

# · x, y :表示间距均匀的网格数据。
· u, v:表示(x,y)速率的二维数组。
· density :表示流线的密度。
· linewidth :表示流线的宽度。
· arrowsize :表示箭头的大小。
· arrowstyle :表示箭头的类型。
· minlength :表示流线的最小长度。
· maxlength :表示流线的最大长度。

# 此外,Axes 类的对象也可以使用 streamplot() 方法绘制矢量场流线图。
下面根据一组模拟某磁场的网格数据绘制一个矢量场流线图,示例代码如下。

In [2]:
import numpy as np
import matplotlib.pyplot as plt
y, x = np.mgrid[ 0:5:50j, 0:5:50j]
u = x
v = y
fig = plt.figure()
ax = fig.add_subplot(111)
# 绘制矢量场流线图
ax.streamplot(x, y, u, v)
plt.show()

# 运行程序,效果如图 8-4 所示。

# 由图 8-4 可知,右侧的流线密度较大,说明该处磁场较强。