Color themes

I'm no good at choosing colors. Does matplotlib have a way to automatically assign colors (based on a theme), or provide a way to choose a color from a theme? (Excel 2007 opened my eyes to this.) Currently, when I do:

   bar(..., color = 'r', ...)
   bar(..., color = 'y', ...)
   bar(..., color = 'b', ...)

I usually just choose one of the primary colors. It would be nice if I could instead write the following (or better if the colors could be assigned automagically), so I needn't worry about choosing colors:

   bar(..., color = themecolor(0), ...)
   bar(..., color = themecolor(1), ...)
   bar(..., color = themecolor(2), ...)

I see these things called colormaps on the home page documentation, but I can't figure out how to use these (calling autumn() before plotting made no change to my plot) or whether they're even what I'm looking for. Or perhaps there's some Python package out there completely unrelated to matplotlib that I could use? Thanks in advance for any hints.

···

--
Yang Zhang
http://www.mit.edu/~y_z/

Someplace to start:

···

----
     from matplotlib import cm
     shade = cm.bone_r
     cmstep = shade.N/len(vg_bulk) #TODO: even *more* elegant to space colors by time elapsed
     for ii in range(len(vg_bulk)):
         hue = shade(ii*cmstep)
         #convert to moles
         for iii in (0,1,2):
             vg_bulk[ii][1][iii] = vg_bulk[ii][1][iii]*(10**6*22.4)**-1
         ba.plot(vg_bulk[ii][1], vg_sites,
                 color = hue, linestyle=':', marker='o',label='%d days'%vg_bulk[ii][0])
----

and here's what I do for linestyle themes, when I don't know how many lines I'm going to plot but want adjacent ones to be different (and a set of less than seven looks nice):
----
from itertools import cycle
self.linestyleskwargs = cycle(map(lambda tu: dict(zip(('color','dashes'),tu)), (('0.5',(4,1,1,1)),('0.4',(2,1)),('0.3',(5,1,2,1)),('0.2',(4,1)),('0.1',(6,1)), ('0.0',(10,1)))))

for g in self.gases.values():
     style = self.linestyleskwargs.next()
     p.plot(g.conc,n.linspace(0,self.depth,self.depth/self.delx),label=g.label, **style)
----

I'm sure either of these examples can be made tidier, or they could be combined, or one could set up something to replot all the lines in an existing plot, with nicely spaced colors, once you know how many there are.

&C

On Jan 16, 2009, at 3:37 PM, Yang Zhang wrote:

I'm no good at choosing colors. Does matplotlib have a way to
automatically assign colors (based on a theme), or provide a way to
choose a color from a theme? (Excel 2007 opened my eyes to this.)
Currently, when I do:

  bar(..., color = 'r', ...)
  bar(..., color = 'y', ...)
  bar(..., color = 'b', ...)

I usually just choose one of the primary colors. It would be nice if I
could instead write the following (or better if the colors could be
assigned automagically), so I needn't worry about choosing colors:

  bar(..., color = themecolor(0), ...)
  bar(..., color = themecolor(1), ...)
  bar(..., color = themecolor(2), ...)

I see these things called colormaps on the home page documentation, but
I can't figure out how to use these (calling autumn() before plotting
made no change to my plot) or whether they're even what I'm looking for.
Or perhaps there's some Python package out there completely unrelated
to matplotlib that I could use? Thanks in advance for any hints.
--
Yang Zhang
http://www.mit.edu/~y_z/

------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Chloe Lewis
Graduate student, Amundson Lab
Division of Ecosystem Sciences, ESPM
University of California, Berkeley
137 Mulford Hall - #3114
Berkeley, CA 94720-3114
chlewis@...2456...