how to define custom colormap from set of RGB values ?

Did you check values in palette?

With

palette /= 255

you're setting the value in place. Because the palette.dtype is int,
the result is also an integer array, i.e., only with with zeros and
ones.

You may do

palette = [reds,greens,blues]
palette = numpy.array(palette, dtype="d")

Regards,

-JJ

···

On Wed, Jun 16, 2010 at 1:40 PM, Jim Vickroy <Jim.Vickroy@...259...> wrote:

Jae-Joon Lee wrote:

As you can see from the error, the dimension of your input is wrong
(it needs to be transposed).
Furthermore, matplotlib expects the rgb values in 0-1.

replace

colormap = matplotlib.colors.ListedColormap(palette,'custom-orange')

with

colormap =
matplotlib.colors.ListedColormap(palette.T/255.,'custom-orange')

Regards,

-JJ

Thanks much for this JJ !

I have a follow-up question. :frowning:

The attached script is a slight modification of the one originally posted.

The attached PNG files are the outputs from the attached script.

Prior to my original post, I had actually tried something "similar" to your
solution -- namely:

palette = [reds,greens,blues]
palette = palette.transpose()
palette /= 255.0
colormap = matplotlib.colors.ListedColormap(palette,'custom-orange-jv')

I do not know why the 2 PNG files are so different in appearance (and size).

I would appreciate some help understanding this.

Thanks,
-- jv

P.S.
As seen in the attached script, the orange-JJ.png is the result of using
your (i.e., JJ's) solution.

On Wed, Jun 16, 2010 at 11:13 AM, Jim Vickroy <Jim.Vickroy@...259...> >> wrote:

Hello,

The attached script shows my (failed) attempt to define a custom color
map
from a set of RGB values (taken from an IDL palette).

My approach is presumably completely wrong, but I have not found
information
or examples on how to do this.

Could someone point in the right direction?

Thanks,

-- jv

P.S.
When run on my workstation, the output from the attached script is:

<output>
Python version: 2.6.4 (r264:75708, Oct 26 2009, 08:23:19) [MSC v.1500
32
bit (Intel)]
matplotlib version: 0.99.3
numpy version: 1.4.0
Traceback (most recent call last):
File "custom-colormap.py", line 97, in <module>
plotter.savefig('%s.png' %colormap.name, facecolor='black',
edgecolor='black')
File "C:\Python26\lib\site-packages\matplotlib\pyplot.py", line 356, in
savefig
return fig.savefig(*args, **kwargs)
File "C:\Python26\lib\site-packages\matplotlib\figure.py", line 1032, in
savefig
self.canvas.print_figure(*args, **kwargs)
File "C:\Python26\lib\site-packages\matplotlib\backend_bases.py", line
1476, in print_figure
**kwargs)
File "C:\Python26\lib\site-packages\matplotlib\backends\backend_agg.py",
line 358, in print_png
FigureCanvasAgg.draw(self)
File "C:\Python26\lib\site-packages\matplotlib\backends\backend_agg.py",
line 314, in draw
self.figure.draw(self.renderer)
File "C:\Python26\lib\site-packages\matplotlib\artist.py", line 46, in
draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "C:\Python26\lib\site-packages\matplotlib\figure.py", line 773, in
draw
for a in self.axes: a.draw(renderer)
File "C:\Python26\lib\site-packages\matplotlib\artist.py", line 46, in
draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "C:\Python26\lib\site-packages\matplotlib\axes.py", line 1701, in
draw
im.draw(renderer)
File "C:\Python26\lib\site-packages\matplotlib\artist.py", line 46, in
draw_wrapper
draw(artist, renderer, *args, **kwargs)
File "C:\Python26\lib\site-packages\matplotlib\image.py", line 237, in
draw
im = self.make_image(renderer.get_image_magnification())
File "C:\Python26\lib\site-packages\matplotlib\image.py", line 182, in
make_image
x = self.to_rgba(self._A, self._alpha)
File "C:\Python26\lib\site-packages\matplotlib\cm.py", line 167, in
to_rgba
x = self.cmap(x, alpha=alpha, bytes=bytes)
File "C:\Python26\lib\site-packages\matplotlib\colors.py", line 489, in
__call__
if not self._isinit: self._init()
File "C:\Python26\lib\site-packages\matplotlib\colors.py", line 720, in
_init
for c in self.colors], np.float)
File "C:\Python26\lib\site-packages\matplotlib\colors.py", line 311, in
to_rgb
raise ValueError('to_rgb: Invalid rgb arg "%s"\n%s' % (str(arg), exc))
ValueError: to_rgb: Invalid rgb arg "(0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2,
3,
4, 4, 5, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 22, 23,
25,
26, 28, 29, 31, 33, 34, 36, 38,
40, 41, 43, 45, 47, 49, 50, 53, 55, 57, 59, 61, 64, 66, 68, 70, 72, 74,
76,
79, 82, 84, 87, 89, 91, 94, 96, 99, 101, 104, 106, 108, 110, 113, 116,
118,
121, 124, 127, 128, 131, 134, 137
, 138, 141, 144, 147, 149, 152, 155, 156, 160, 161, 164, 168, 169, 172,
174,
177, 179, 182, 184, 188, 189, 191, 195, 196, 198, 202, 203, 205, 209,
211,
212, 214, 216, 220, 222, 224, 225
, 227, 229, 231, 233, 235, 237, 239, 241, 243, 245, 247, 249, 251, 253,
255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255,
255, 255, 255, 255, 255, 255, 255
, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255,
255, 255, 255, 255, 255, 255, 255
, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255,
255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255,
255, 255, 255, 255, 255, 255, 255
, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
255,
255, 255, 255, 255, 255, 255, 255, 255)"
sequence length is 256; must be 3 or 4
</output>

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the
lucky parental unit. See the prize list and enter to win:
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users