On Thu, Dec 9, 2010 at 9:01 AM, Ian Harry <ian.harry@astro.cf.ac.uk> wrote:
Hi all,

I am having a problem with manipulating colorbars. I want to take the cm.Blues colorbar and edit it so that the lowest end of the colorbar is light blue instead of white, or in other words I want to remove the lightest 1/4 of the colorbar and just keep the darker end.

Is there any easy way to do this?

Any help would be greatly appreciated!


Ian Harry


First, as a point of semantics, you are talking about colormaps, not colorbars.

I have attempted at one point a framework to allow users to manipulate colormaps, but it is very difficult to make it work in a generalized framework.  However, it is "relatively" easier to specifically hack a particular colormap to get the results you need.

import matplotlib.cm as cm
import matplotlib.colors as mcolors

cm.Blues._init()           # forces it to internally create the '_lut' array
newBlues = mcolors.LinearSegmentedColormap.from_list("newBlues", cm.Blues._lut[cm.Blues.N/3:-3, :-1], 256)

This should create a new colormap by reinterpolating the last 2/3rds of the Blues colordata to a new 256 colors colormap.

I hope this helps!

Ben Root