On Fri, Jun 5, 2009 at 9:56 PM, Fernando Perez<fperez....@gmail.com> wrote:
> Hopefully the code below is illustrative and commented enough to > clarify my question (also attached if you prefer to download it than > to copy/paste). Hey Fernando -- thanks for the report and test case. I committed a change to svn which fixes this -- I'd like one of the color gurus (Eric?) to take a look at this because the color handling code is fairly complex as it handles a lot of different cases. The problem here was that the ColorConverter.to_rgba_array was applying the alpha even though the input array was rgba already. I special case this and do not convert when the input is already an Nx4 array. Are there any cases I am missing? See the inline comment below: def to_rgba_array(self, c, alpha=None): """ Returns a numpy array of *RGBA* tuples. Accepts a single mpl color spec or a sequence of specs. Special case to handle "no color": if *c* is "none" (case-insensitive), then an empty array will be returned. Same for an empty list. """ try: if c.lower() == 'none': return np.zeros((0,4), dtype=np.float_) except AttributeError: pass if len(c) == 0: return np.zeros((0,4), dtype=np.float_) try: result = np.array([self.to_rgba(c, alpha)], dtype=np.float_) except ValueError: if isinstance(c, np.ndarray): if c.ndim != 2 and c.dtype.kind not in 'SU': raise ValueError("Color array must be two-dimensional") if len(c.shape)==2 and c.shape[-1]==4: # looks like rgba already, nothing to be done; do # we want to apply alpha here if # (c[:,3]==1).all() ? return c result = np.zeros((len(c), 4)) for i, cc in enumerate(c): result[i] = self.to_rgba(cc, alpha) # change in place return np.asarray(result, np.float_) JDH ------------------------------------------------------------------------------ OpenSolaris 2009.06 is a cutting edge operating system for enterprises looking to deploy the next generation of Solaris that includes the latest innovations from Sun and the OpenSource community. Download a copy and enjoy capabilities such as Networking, Storage and Virtualization. Go to: http://p.sf.net/sfu/opensolaris-get _______________________________________________ Matplotlib-devel mailing list Matplotlib-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-devel