当尝试使用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)
输出:
正如你所看到的,我们期望向量最多为1个单位长(0或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)
结果:
他们在那里,但实际上他们很小。这是左上角的缩放版本: