quiver() color arrays?

Hey there,

I’m trying to plot a bunch-o-vectors, colored red or blue, depending on whether their magnitude is positive or negative (they represent stresses), and I’m doing something like this:

mag1 = evals[:,0]
ex1 = evecs[:,0,1]
ey1 = evecs[:,0,0]
C1 = np.where(mag1 >= 0, ‘red’, ‘blue’)

mag2 = evals[:,1]
ex2 = evecs[:,1,1]
ey2 = evecs[:,1,0]
C2 = np.where(mag2 >= 0, ‘red’, ‘blue’)

basemap_ax.quiver(np.degrees(calc_phis), np.degrees(np.pi/2.0-calc_thetas), mag1ex1, mag1ey1, C1, lw=0, width=0.002, scale=1e8)
basemap_ax.quiver(np.degrees(calc_phis), np.degrees(np.pi/2.0-calc_thetas), mag2ex2, mag2ey2, C2, lw=0, width=0.002, scale=1e8)
basemap_ax.quiver(np.degrees(calc_phis), np.degrees(np.pi/2.0-calc_thetas), -mag1ex1, -mag1ey1, C1, lw=0, width=0.002, scale=1e8)
basemap_ax.quiver(np.degrees(calc_phis), np.degrees(np.pi/2.0-calc_thetas), -mag2ex2, -mag2ey2, C2, lw=0, width=0.002, scale=1e8)

And it gives me the stack trace below… I also tried just using plain-old quiver (not via basemap) and got the same error. I tried using rgba tuples and grayscale strings as colors as well, and still got the same error. Anybody have any idea what the deal is? Or am I misunderstanding what C is supposed to be (i.e. not just an array of colors, of the same length as the number of vectors being plotted…)

/Library/Python/2.5/site-packages/mpl_toolkits/basemap/init.pyc in quiver(self, x, y, u, v, *args, **kwargs)
2877 ax.hold(h)
2878 try:
-> 2879 ret = ax.quiver(x,y,u,v,*args,**kwargs)
2880 try:
2881 plt.draw_if_interactive()

/Library/Python/2.5/site-packages/matplotlib/axes.pyc in quiver(self, *args, **kw)
5850 def quiver(self, *args, **kw):
5851 if not self._hold: self.cla()
-> 5852 q = mquiver.Quiver(self, *args, **kw)
5853 self.add_collection(q, False)
5854 self.update_datalim(q.XY)

/Library/Python/2.5/site-packages/matplotlib/quiver.pyc in init(self, ax, *args, **kw)
367 **kw)
368 self.polykw = kw
–> 369 self.set_UVC(U, V, C)
370 self._initialized = False
371

/Library/Python/2.5/site-packages/matplotlib/quiver.pyc in set_UVC(self, U, V, C)
439 mask = ma.mask_or(U.mask, V.mask, copy=False, shrink=True)
440 if C is not None:
–> 441 C = ma.masked_invalid(C, copy=False).ravel()
442 mask = ma.mask_or(mask, C.mask, copy=False, shrink=True)
443 if mask is ma.nomask:

/Library/Python/2.5/site-packages/numpy/ma/core.pyc in masked_invalid(a, copy)
1996 “”"
1997 a = np.array(a, copy=copy, subok=True)
-> 1998 condition = ~(np.isfinite(a))
1999 if hasattr(a, ‘_mask’):
2000 condition = mask_or(condition, a._mask)

TypeError: bad operand type for unary ~: ‘NotImplementedType’

···


Zane A. Selvans
Amateur Earthling
http://zaneselvans.org
+1 303 815 6866

Zane Selvans wrote:

Hey there,

I'm trying to plot a bunch-o-vectors, colored red or blue, depending on whether their magnitude is positive or negative (they represent stresses), and I'm doing something like this:

mag1 = evals[:,0]
ex1 = evecs[:,0,1]
ey1 = evecs[:,0,0]
C1 = np.where(mag1 >= 0, 'red', 'blue')

mag2 = evals[:,1]
ex2 = evecs[:,1,1]
ey2 = evecs[:,1,0]
C2 = np.where(mag2 >= 0, 'red', 'blue')

The C argument to quiver is for an array to be used with a colormap; you could use that with a listed colormap, or, to use something very close to what you already have, try using the "color" kwarg for your C1 and C2. It takes a single value or a sequence of color specs.

Eric

···

basemap_ax.quiver(np.degrees(calc_phis), np.degrees(np.pi/2.0-calc_thetas), mag1*ex1, mag1*ey1, C1, lw=0, width=0.002, scale=1e8)
basemap_ax.quiver(np.degrees(calc_phis), np.degrees(np.pi/2.0-calc_thetas), mag2*ex2, mag2*ey2, C2, lw=0, width=0.002, scale=1e8)
basemap_ax.quiver(np.degrees(calc_phis), np.degrees(np.pi/2.0-calc_thetas), -mag1*ex1, -mag1*ey1, C1, lw=0, width=0.002, scale=1e8)
basemap_ax.quiver(np.degrees(calc_phis), np.degrees(np.pi/2.0-calc_thetas), -mag2*ex2, -mag2*ey2, C2, lw=0, width=0.002, scale=1e8)

And it gives me the stack trace below... I also tried just using plain-old quiver (not via basemap) and got the same error. I tried using rgba tuples and grayscale strings as colors as well, and still got the same error. Anybody have any idea what the deal is? Or am I misunderstanding what *C* is supposed to be (i.e. not just an array of colors, of the same length as the number of vectors being plotted...)

/Library/Python/2.5/site-packages/mpl_toolkits/basemap/__init__.pyc in quiver(self, x, y, u, v, *args, **kwargs)
   2877 ax.hold(h)
   2878 try:
-> 2879 ret = ax.quiver(x,y,u,v,*args,**kwargs)
   2880 try:
   2881 plt.draw_if_interactive()

/Library/Python/2.5/site-packages/matplotlib/axes.pyc in quiver(self, *args, **kw)
   5850 def quiver(self, *args, **kw):
   5851 if not self._hold: self.cla()
-> 5852 q = mquiver.Quiver(self, *args, **kw)
   5853 self.add_collection(q, False)
   5854 self.update_datalim(q.XY)

/Library/Python/2.5/site-packages/matplotlib/quiver.pyc in __init__(self, ax, *args, **kw)
    367 **kw)
    368 self.polykw = kw
--> 369 self.set_UVC(U, V, C)
    370 self._initialized = False
    371

/Library/Python/2.5/site-packages/matplotlib/quiver.pyc in set_UVC(self, U, V, C)
    439 mask = ma.mask_or(U.mask, V.mask, copy=False, shrink=True)
    440 if C is not None:
--> 441 C = ma.masked_invalid(C, copy=False).ravel()
    442 mask = ma.mask_or(mask, C.mask, copy=False, shrink=True)
    443 if mask is ma.nomask:

/Library/Python/2.5/site-packages/numpy/ma/core.pyc in masked_invalid(a, copy)
   1996 """
   1997 a = np.array(a, copy=copy, subok=True)
-> 1998 condition = ~(np.isfinite(a))
   1999 if hasattr(a, '_mask'):
   2000 condition = mask_or(condition, a._mask)

TypeError: bad operand type for unary ~: 'NotImplementedType'

--
Zane A. Selvans
Amateur Earthling
http://zaneselvans.org
+1 303 815 6866

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

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july

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

_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
matplotlib-users List Signup and Options