matplotlibs quiver 是如何工作的?

Jan*_*aas 1 python matplotlib histogram

我试图通过反复试验来理解 Quiver,但我的数学不是那么重要。我想知道是否有人可以对此有所了解。

我有一个直方图作为这样的矩阵:

magnitude, angle = [[3,2,4,3,9], [x,x,x,x,x]]
Run Code Online (Sandbox Code Playgroud)

角度尚未确定,但在直方图上,角度是分档,幅度是 Y。第一个分档将代表圆的前 1/5,因此是那里的角度。

然而,为什么我还没有填充角度的问题是因为我想用 plt.quiver 从一个点绘制 5 条线/向量。

plt.quiver(x,y,u,v) 
Run Code Online (Sandbox Code Playgroud)

X 和 Y 不言自明,但我无法弄清楚 u 和 v 代表什么。文档也没有说太多。我需要从同一点以直方图中给出的特定角度和幅度绘制 5 条线,但我无法让它工作。我什至以正确的方式使用该功能吗?谢谢 !!

顺便说一句,我正在制作一个猪(梯度直方图),结果应该是这样的:

在此处输入图片说明

Imp*_*est 5

quiver 的调用签名是quiver(X, Y, U, V).
它通常有助于将问题减少到最小的例子。考虑以下代码:

import matplotlib.pyplot as plt

fig, ax=plt.subplots()

ax.quiver([0,1.5],[.5,1.5],[1,-0.5],[1,-1],
          angles='xy', scale_units='xy', scale=1.)

ax.set_xlim([-1,2])
ax.set_ylim([0,2])
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

此代码添加了两个箭头。第一个从点开始(x=0, y=0.5),第二个从 开始(1.5, 1.5)。第一个箭头指向方向(u=1,v=1),第二个在方向 (-0.5,-1) 上。

现在在这种情况下,我们设置scale_units='xy'scale=1使得uv位于数据坐标中并且箭头的端点是(x0+u0, y0+v0)。如果我们选择不同的比例单位,箭头的长度会不同,但方向是相同的。

因此,如果您调用quiver(X, Y, U, V),则会绘制len(U)不同的箭头;i从 开始X[i], Y[i]并指向方向的第 th 个箭头U[i],Y[i]

这意味着为了在每个位置绘制 5 个箭头,您可以调用 quiver5 次,使用相同的网格参数XY但使用不同的UV