Revision: 7902
http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7902&view=rev
Author: efiring
Date: 2009-10-23 02:44:32 +0000 (Fri, 23 Oct 2009)
Log Message:
-----------
Fixed two bugs involving reversal of colormaps.
Modified Paths:
--------------
trunk/matplotlib/lib/matplotlib/cm.py
Modified: trunk/matplotlib/lib/matplotlib/cm.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/cm.py 2009-10-22 13:46:08 UTC (rev
7901)
+++ trunk/matplotlib/lib/matplotlib/cm.py 2009-10-23 02:44:32 UTC (rev
7902)
@@ -19,11 +19,20 @@
# reverse all the colormaps.
# reversed colormaps have '_r' appended to the name.
+def _reverser(f):
+ def freversed(x):
+ return f(1-x)
+ return freversed
+
def revcmap(data):
data_r = {}
for key, val in data.iteritems():
if callable(val):
- valnew = lambda x: 1 - val(x)
+ valnew = _reverser(val)
+ # This doesn't work: lambda x: val(1-x)
+ # The same "val" (the first one) is used
+ # each time, so the colors are identical
+ # and the result is shades of gray.
else:
valnew = [(1.0 - a, b, c) for a, b, c in reversed(val)]
data_r[key] = valnew
@@ -43,13 +52,15 @@
cmap_d[cmapname_r] = colors.LinearSegmentedColormap(
cmapname_r, datad[cmapname_r], LUTSIZE)
else:
- datad[cmapname] = list(cmapspec)
- datad[cmapname_r] = list(datad[cmapname])
- datad[cmapname_r].reverse()
+ revspec = list(reversed(cmapspec))
+ if len(revspec[0]) == 2: # e.g., (1, (1.0, 0.0, 1.0))
+ revspec = [(1.0 - a, b) for a, b in revspec]
+ datad[cmapname_r] = revspec
+
cmap_d[cmapname] = colors.LinearSegmentedColormap.from_list(
- cmapname, datad[cmapname], LUTSIZE)
+ cmapname, cmapspec, LUTSIZE)
cmap_d[cmapname_r] = colors.LinearSegmentedColormap.from_list(
- cmapname_r, datad[cmapname_r], LUTSIZE)
+ cmapname_r, revspec, LUTSIZE)
locals().update(cmap_d)
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins