File Exchange

image thumbnail

usercolormap

version 1.0.0.0 (6.07 KB) by Yo Fukushima
usercolormap lets you create your own colormap in a simple way. Intensity scale can be respected.

2 Downloads

Updated 01 Apr 2016

View License

USERCOLORMAP(COLOR1,COLOR2,COLOR3,...) creates a colormap with colors specified by 1x3 vectors (COLOR1, COLOR2, COLOR3...).

When the number of input colors are three for example, the function linearly interpolates every column of a 3x3 matrix [COLOR1;COLOR2;COLOR3] to 256 values, which is to be used as an input to COLORMAP. It means that colors between those you specified change gradually.

If you put a number (>0) as the last input argument (USERCOLORMAP(...,NUM)), then the intensity scaling is respected by automatically adjusting colors, in such a way that the first color be the darkest (or lightest) and the last be the lightest (or darkest). This is useful when figures have to be printed out or photocopied in grayscale.

When using this option, n-th intensity I(n) is expressed by I(n) = I(1) + (I(256)-I(1))*((n-1)/255)^NUM. When NUM = 1, then the scaling is linear (as in colormap(gray)). 1.2 can be a good compromise between color map and intensity scale. You can check how it looks in intensity (black and white) by exporting a figure to a black/white eps format.

You can also create an m-script like
%%%%%%
function C = mycolor
C = usercolormap([0 0 0],[1 0 0],[1 1 1]);
%%%%%%
and call this colormap by 'colormap(mycolor)'.

(Example 1)
color1 = [1 0 0];
color2 = [1 1 1];
color3 = [0 0 1];
figure;
colormap(usercolormap(color1,color2,color3)),colorbar;

(Example 2)
color1 = [0 0 0];
color2 = [1 0 0];
color3 = [0.2 0.2 1];
color4 = [1 1 0];
color5 = [1 1 1];
figure;
C = usercolormap(color1,color2,color3,color4,color5,1);
colormap(C),colorbar;

Cite As

Yo Fukushima (2021). usercolormap (https://www.mathworks.com/matlabcentral/fileexchange/7144-usercolormap), MATLAB Central File Exchange. Retrieved .

Comments and Ratings (8)

maryline bawedin

Problem with the intensity factor. Produce negative values inside the colormap.
Tried with the following example:
color1 = [1 1 0.7];
color2 = [1 0.8 0];
color3 = [1 0 0];
color4 = [0.4 0 0];
TestMap=usercolormap(color1,color2,color3,color4,1.2)

Fred De Masi

Great! Cheers!

Matthias Moosmann

Perfect! Exactly what I was looking for!
Thanks!

Carlos Adrián Vargas Aguilera

Great, and agree with Lupita (nice name)!

Lupita Marquez

Good, i improved it by setting the input as a matriz with 3 columns, and with the size of the map as a varargin (default 256).

Tom Williams

Very useful, especially the intensity interpolation figure. How about including the ability to generate a colormap of arbitrary size?

Megha Jain

The program was really good but what should i do to exploit its full functionality

Pierre Tinard

MATLAB Release Compatibility
Created with R11.1
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!