matplotlib
中的 quiver
方法可用于绘制箭头(向量),下面介绍二维和三维中的使用方法
二维箭头向量绘制
一般参数如下
quiver(X, Y, U, V, **kw)
参数的含义如下图所示,其中X
和Y
决定箭头尾部的位置,U
和V
决定箭头的方向,可以理解为以箭头尾部为起点,沿X和Y轴的分量。
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(0, 10, 40)
y = x ** 2 * np.exp(-x)
u = np.array([x[i + 1] - x[i] for i in range(len(x) - 1)])
v = np.array([y[i + 1] - y[i] for i in range(len(x) - 1)])
x = x[:len(u)] # 使得维数和u,v一致
y = y[:len(v)]
c = np.random.randn(len(u)) # arrow颜色
plt.figure()
plt.quiver(x, y, u, v, c, angles='xy', scale_units='xy', scale=1)
plt.show()
三维箭头向量绘制
三维和二维类似,只不过多了一个维度,参数的意义是一样的
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# 绘制点
num_points = 20
pts = np.random.rand(num_points, 3)
ax.scatter(pts[:, 0], pts[:, 1], pts[:, 2], c='b', s=3, linewidth=0, alpha=1, marker="o")
# 绘制箭头
direction = np.random.rand(num_points, 3)
ax.quiver(pts[:, 0], pts[:, 1], pts[:, 2],
direction[:, 0], direction[:, 1], direction[:, 2],
length=0.05, normalize=True, color='r')
plt.show()