Hi folks,

I frequently need to make a vector plot that shows (dx,dy) displacements from a set of (x,y) points. "Quiver" doesn't seem to do quite what I want, although maybe I just can't figure out how to use it.

Anyhow here is a function I wrote to do what I want using the pylab interface, in case it can be cleaned up and incorporated into matplotlib for general use.

def vectorplot(x,y,dx,dy,scale=1):

""" Generate a vector plot with lines emanating from the (x,y)

points that represent the (dx,dy) displacement at each point.

@param scale: Multiply (dx,dy) by this factor to make the displacements

more visible

@return: (cell_handle, displacement_handle) which can be used

to pass to "legend"

"""

u=x+scale*dx

v=y+scale*dy

#loop through to make the plots

for i in range(len(x)):

dhandle=plot([x[i],u[i]],[y[i],v[i]],'o-b',

label='shifts [* %4.1f]'%scale)

#then overplot the origin points in a different color

chandle=plot(x,y,'sk',label='zone')

return (chandle,dhandle)

cheers,

Vicki Laidler