我试图通过反复试验来理解箭袋,但我的数学并不是那么重要。我想知道是否有人可以对此有所了解。
我有一个直方图作为这样的矩阵:
magnitude, angle = [[3,2,4,3,9], [x,x,x,x,x]]
角度尚未确定,但在直方图上,角度是箱子,幅度是Y.第一个箱子代表圆圈的前1/5,因此是角度。
然而问题是为什么我还没有填充角度是因为我想用plt.quiver从一个点画出5行/向量。
plt.quiver(x,y,u,v)
X和Y说话本身,但我无法弄清楚u和v代表的位置。文档也没有说太多。我需要从同一点绘制5条直线,并在直方图中给出一定的角度和幅度,但我无法使其工作。我甚至以正确的方式使用该功能吗?谢谢!!
btw我正在制作一个猪(梯度直方图),结果应如下所示:
答案 0 :(得分:4)
箭袋的来电签名是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()
此代码添加两个箭头。第一个从(x=0, y=0.5)
点开始,第二个从(1.5, 1.5)
开始。第一个箭头方向(u=1,v=1)
,第二个方向(-0.5,-1)。
现在,在这种情况下,我们设置scale_units='xy'
和scale=1
,使u
和v
位于数据坐标中,箭头的端点为(x0+u0, y0+v0)
。如果我们选择不同的比例单位,箭头的长度会有所不同,但方向会相同。
因此,如果您致电quiver(X, Y, U, V)
,则会绘制len(U)
个不同的箭头; i
箭头从X[i], Y[i]
开始,指向U[i],Y[i]
方向。
这意味着为了在每个位置绘制5个箭头,您可以使用相同的网格参数quiver
和X
调用Y
五次,但使用不同的U
和V
。
答案 1 :(得分:0)
来自matplotlib.axes.Axes.quiver
文档
致电签名
quiver(U, V, **kw)
quiver(U, V, C, **kw)
quiver(X, Y, U, V, **kw)
quiver(X, Y, U, V, C, **kw)
参数
X
:箭头位置的x坐标
Y
:箭头位置的y坐标
U
:箭头矢量的x个分量V
:箭头矢量的y分量
所以基本上(x, y)
表示每个箭头的位置,而(u, v)
表示向量的方向。