Python - pyplot.quiver(X,Y,U,V)没有绘制预期结果

时间:2016-10-27 13:17:26

标签: python matplotlib plot

当尝试使用pyplot库中的quiver方法绘制向量时,我收到意外且不正确的结果。 在调试时,我将所需的数组打印到控制台并收到:

X = [0, 0, 0, 0, 40, 40, 40, 40, 80, 80, 80, 80, 120, 120, 120, 120] # X-coordinate
Y = [0, 40, 80, 120, 0, 40, 80, 120, 0, 40, 80, 120, 0, 40, 80, 120] # Y-coordinate
UN = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1] # X-component
VN = [0, 0, 0, -1, 0, 0, 0, -1, 0, -1, -1, -1, 0, 0, -1, -1] # Y-component

使用以下代码片段绘制上面的数组:

plot = plt.figure()
plt.quiver(X, Y, UN, VN, color='Teal', headlength=7)

plt.title('Quiver Plot, Single Colour')
plt.show(plot)

输出:

Quiver Plot

正如你所看到的,我们期望向量最多为1个单位长(0或1),但我们的图上仍然会收到不正确的(更长的)向量。

1 个答案:

答案 0 :(得分:1)

您应该使用scale_units='xy'scale=1

代码:

import matplotlib.pyplot as plt

X = [0, 0, 0, 0, 40, 40, 40, 40, 80, 80, 80, 80, 120, 120, 120, 120] # X-coordinate
Y = [0, 40, 80, 120, 0, 40, 80, 120, 0, 40, 80, 120, 0, 40, 80, 120] # Y-coordinate
UN = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1] # X-component
VN = [0, 0, 0, -1, 0, 0, 0, -1, 0, -1, -1, -1, 0, 0, -1, -1] # Y-component

plot = plt.figure()
plt.quiver(X, Y, UN, VN, color='Teal', scale_units ='x',scale=1)

plt.title('Quiver Plot, Single Colour')
plt.xlim(-10,130)
plt.ylim(-10,130)
plt.show(plot)

结果:

enter image description here

他们在那里,但实际上他们很小。这是左上角的缩放版本:

enter image description here