Editing a colorbar

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!

Thanks

Ian Harry

···

Ian Harry
School of Physics & Astronomy
Queens Buildings, The Parade
Cardiff, CF24 3AA
Email: Ian.Harry@…1663…
Phone: (+44) 29 208 75120
Mobile: (+44) 7890 479090

Ian,

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

···

On Thu, Dec 9, 2010 at 9:01 AM, Ian Harry <ian.harry@…3362…> 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!

Thanks

Ian Harry

Hi Ben,

Thanks for the suggestion, unfortunately I get:

Traceback (most recent call last):
File “spin_bank.py”, line 43, in ?
newBlues = mcolors.LinearSegmentedColormap.from_list(“newBlues”, cm.Blues._lut[cm.Blues.N/3:-3, :-1], 256)
AttributeError: class LinearSegmentedColormap has no attribute ‘from_list’

Am I missing something?

Thanks

Ian

···

On 10 December 2010 15:50, Benjamin Root <ben.root@…1304…> wrote:

On Thu, Dec 9, 2010 at 9:01 AM, Ian Harry <ian.harry@…1663…> 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!

Thanks

Ian Harry

Ian,

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

Ian Harry
School of Physics & Astronomy
Queens Buildings, The Parade
Cardiff, CF24 3AA

Email: Ian.Harry@…1663…
Phone: (+44) 29 208 75120
Mobile: (+44) 7890 479090

What version of matplotlib are you using?

Ben Root

···

On Fri, Dec 10, 2010 at 11:00 AM, Ian Harry <ian.harry@…3363…> wrote:

Hi Ben,

Thanks for the suggestion, unfortunately I get:

Traceback (most recent call last):
File “spin_bank.py”, line 43, in ?

newBlues = mcolors.LinearSegmentedColormap.from_list("newBlues", cm.Blues._lut[cm.Blues.N/3:-3, :-1], 256)

AttributeError: class LinearSegmentedColormap has no attribute ‘from_list’

Am I missing something?

Thanks

Ian

On 10 December 2010 15:50, Benjamin Root <ben.root@…1304…> wrote:

On Thu, Dec 9, 2010 at 9:01 AM, Ian Harry <ian.harry@…83…1663…> 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!

Thanks

Ian Harry

Ian,

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