matplotlibs如何颤抖?

时间:2017-05-01 17:10:55

标签: python matplotlib histogram

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

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

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我正在制作一个猪(梯度直方图),结果应如下所示:

enter image description here

2 个答案:

答案 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()

enter image description here

此代码添加两个箭头。第一个从(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]开始,指向U[i],Y[i]方向。

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

答案 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)表示向量的方向