I think that I have found a serious bug in vector plotting (quiver)
when the "angle=xy" option is used on a plot with a large aspect
ratio.  It is my understanding that with this option, the vector with
tail at (x,y) would have its head at (x + vx,y + vy); at least this is
what it says in the documentation.

The problem is best illustrated by the following example:

------------

#!/usr/bin/python
#
from numpy import *
import matplotlib.pyplot as plt

lx = 100.
ly = 10.
pi = 3.14159
kx = pi/lx
ky = pi/ly
nx = 21
ny = 21
x = linspace(0,lx,nx)
y = linspace(0,ly,ny)
(X,Y) = meshgrid(x,y)

# this is a streamfunction
psi = sin(kx*X)*sin(ky*Y)

# these are the velocity components derived from the streamfunction
vx = ky*sin(kx*X)*cos(ky*Y)
vy = -kx*cos(kx*X)*sin(ky*Y)

# plot the x velocity
cx = plt.contourf(x,y,vx)
b = plt.colorbar(cx, orientation='vertical')
tl = plt.title("vx")
xlab = plt.xlabel("x")
ylab = plt.ylabel("y")
plt.show()

# plot the y velocity
cy = plt.contourf(x,y,vy)
b = plt.colorbar(cy, orientation='vertical')
tl = plt.title("vy")
xlab = plt.xlabel("x")
ylab = plt.ylabel("y")
plt.show()

# plot the streamfunction and the velocity vectors using the angles=xy option
cp = plt.contour(x,y,psi)
q = plt.quiver(X,Y,vx,vy,angles='xy')
tl = plt.title("psi contours, (vx,vy) vectors")
xlab = plt.xlabel("x")
ylab = plt.ylabel("y")
plt.show()

------------------------------------

The contour plot of vy, the y component of the vector, clearly shows
that vy is non-zero at y = 5.  However, the vector plot has it zero
along this line.  Interestingly, vx appears to be represented correctly
on the x = 50 line.  The magnitude of vectors should be inversely
proportional to the spacing of streamfunction contours, and this is
manifestly untrue in the vector plot.

Please tell me if I am doing something stupid.

Dave

PS: I am using matplotlib 1.1.1 and numpy 1.6.2 on Arch linux.  (Yes,
I have to set the #!/bin/python line in the example to #!/bin/python2
on Arch, since Arch has python3 as default!)

-- 
David J. Raymond
Prof. of Physics
New Mexico Tech
http://www.physics.nmt.edu/~raymond/index.html

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to