如何在matplotlib中使用`quiver()`获取单位向量?

时间:2018-02-06 15:07:58

标签: python matplotlib

我试图围绕quiver函数来绘制矢量字段。这是一个测试用例:

import numpy as np
import matplotlib.pyplot as plt
X, Y = np.mgrid[1:1.5:0.5, 1:1.5:0.5]
print(X)
print(Y)
u = np.ones_like(X)
v = np.zeros_like(Y)
plt.quiver(X,Y, u, v)
plt.axis([0, 3, 0, 3], units='xy', scale=1.)
plt.show()

我正在尝试获取长度为1的向量,从(1,0)指向(2,0),但这是我得到的:

enter image description here

我尝试添加scale='xy'选项,但行为没有改变。那么这是如何工作的?

1 个答案:

答案 0 :(得分:0)

第一个有趣的错误是你将quiver个参数放到axis调用中。 ; - )

接下来,查看the documentation,它说

  

如果scale_units为'x',则向量将为0.5 x轴单位。要在x-y平面中绘制矢量,u和v具有与x和y相同的单位,请使用angles='xy', scale_units='xy', scale=1.

让我们按照文档告诉我们的那样做,

import numpy as np
import matplotlib.pyplot as plt
X, Y = np.mgrid[1:1.5:0.5, 1:1.5:0.5]

u = np.ones_like(X)
v = np.zeros_like(Y)
plt.quiver(X,Y, u, v, units='xy', angles='xy', scale_units='xy', scale=1.)
plt.axis([0, 3, 0, 3])
plt.show()

确实我们得到一个单位长的箭头:

enter image description here