如何关闭 matplotlib 箭袋缩放?

Sco*_*ott 3 matplotlib

matplotlib.pyplot.quiver函数采用一组“原点”点和一组“目的地”点,并绘制一堆从“原点”点开始朝“目的地”点方向的箭头。然而,有一个比例因子,因此箭头不一定在“目的地”点结束,它们只是指向那个方向。

例如

import matplotlib.pyplot as plt
import numpy as np

pts = np.array([[1, 2], [3, 4]])
end_pts = np.array([[2, 4], [6, 8]])

plt.quiver(pts[:,0], pts[:,1], end_pts[:,0], end_pts[:,1])
Run Code Online (Sandbox Code Playgroud)

图片

请注意,左下角的向量从 (1,2) 开始(我想要的),但不结束于 (2,4)。这是由使箭头变长或变短的函数scale参数控制的。quiver如何让箭头精确地结束于 (2,4)?

Imp*_*est 6

箭袋文档指出

要在 xy 平面上绘制向量,其中 u 和 v 具有与 x 和 y 相同的单位,请使用angles='xy', scale_units='xy', scale=1

但请注意,uv是相对于位置来理解的。因此,您需要先获取差额。

import matplotlib.pyplot as plt
import numpy as np

pts = np.array([[1, 2], [3, 4]])
end_pts = np.array([[2, 4], [6, 8]])
diff = end_pts - pts

plt.quiver(pts[:,0], pts[:,1], diff[:,0], diff[:,1],
           angles='xy', scale_units='xy', scale=1.)

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 感谢上帝!这应该是默认行为!如果一个人在轴上绘制箭头,那么人们会期望这些箭头实际上关注该轴...... (2认同)