mm.to_rgba(var.flat) doesn't work as plot_surface facecolors, but 
mm.to_rgba(var) does!

Thanks for the hint

mma


Benjamin Root wrote:
> On Fri, Sep 17, 2010 at 8:59 AM, Martinho MA <m...@ua.pt 
> <mailto:m...@ua.pt>> wrote:
>
>     Hello
>
>     I am trying to calculate the facecolors for the Axes3D.plot_surface
>     function, to have something similar to matlab surf 4th argument!!
>     Something like plot_surface(x,y,z,facecolors=calc_colors(v))
>
>     So, I need to obtain the colors corresponding to the values of v! I
>     created the function calc_colors:
>
>
>     import pylab
>     import numpy as np
>     from matplotlib.colors import rgb2hex
>
>     def calc_colors(var):
>      colors = np.empty(var.shape, dtype='S7')
>      mm=pylab.cm.ScalarMappable()
>      mm.set_clim((var.min(),var.max()))
>      mm.set_cmap(pylab.cm.jet)
>      colors.flat= [rgb2hex(mm.to_rgba(k)[:-1]) for k in var.flat]
>      return colors
>
>
>     Well I believe this is not the smartest way to calculate the colors !!
>     At least it is quite slow !
>     Can someone give me a better solution for this problem?
>
>     than you
>     mma
>
>
> I might be wrong, but can't mm.to_rgba() take var.flat as an input, 
> thereby giving you an array of colors as output?  Also, I don't think 
> it is necessary to call rgb2hex() because matplotlib will just convert 
> that hex back into rgba.  I believe you should be able to just return 
> the result of mm.to_rgba(var.flat).
>
> I hope that helps,
> Ben Root
>


------------------------------------------------------------------------------
Start uncovering the many advantages of virtual appliances
and start using them to simplify application deployment and
accelerate your shift to cloud computing.
http://p.sf.net/sfu/novell-sfdev2dev
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to