I'm trying to do a plot with quiver but I would like the arrows to all have the same size.
I use the following input :
q = ax0.quiver(x, y, dx, dy, units='xy' ,scale=1)
But even if add options like norm = 'true' or Normalize = 'true' the arrows are not normalized
Any one knows how to do this ? Thank you
quiver3( Z , U , V , W ) plots arrows with directional components specified by U , V , and W at equally spaced points along the surface Z . If Z is a vector, then the x-coordinates of the arrows range from 1 to the number of elements in Z and the y-coordinates are all 1.
The ax. quiver() method of matplotlib library of python provides an optional attribute color that specifies the color of the arrow. The quiver color attribute requires the dimensions the same as the position and direction arrays.
Not sure if there is a way to do this by explicitly providing a kwarg to plt.quiver, but a quick work around would be like this:
x = np.arange(10)
y = np.arange(10)
xx, yy = np.meshgrid(x,y)
u = np.random.uniform(low=-1, high=1, size=(10,10))
v = np.random.uniform(low=-1, high=1, size=(10,10))
plt.quiver(xx, yy, u, v)
r = np.power(np.add(np.power(u,2), np.power(v,2)),0.5) #could do (u**2+v**2)**0.5, other ways...
plt.quiver(xx, yy, u/r, v/r)
this just normalizes the u and v components of the vector by the magnitude of the vector, thereby maintaining the proper direction, but scaling down the magnitude of each arrow to 1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With