Perceptually improved colormaps

7 perceptual colormaps with rainbow-like colors and 1 with heat colors
Updated 14 Nov 2014

View License

PMKMP Returns perceptually balanced colormaps
PMKMP(N,SCHEME) returns an Nx3 colormap.
usage: map=pmkmp(n,scheme);
%% Example1: 128-color rainbow with cubic-law luminance (default)
load mandrill;
%% Example2: 128-color palette for azimuthal data
b = repmat(a,[46 1]);
JUSTIFICATION: rainbow, or spectrum color schemes are considered a poor choice for scientific data display by many in the scientific community (see for example reference 1 and 2 in the help) in that they introduce artefacts that mislead the viewer. "The rainbow color map appears as if it is separated into bands of almost constant hue, with sharp transitions between hues. Viewers perceive these sharp transitions as sharp transitions in the data, even when this is not the casein how regularly spaced (interval) data are displayed (quoted from reference 1). This submission is intended to share the results of my efforts to create more perceptually balanced color maps. Please see output arguments section for descriptions.
See files examples.m, examples1.m, and example2.m and associated figures for more examples
See files MakeLabPlotUsingColorspace.m and CompareLabPlotsUsingColorspace.m for some demonstrations.

Extensive reference list and list of other FEX submissions of interest included in the help
Please visit my blog to read about the background research:

Author: Matteo Niccoli
e-mail address:
Release: 4.04
Release date: November 2014

Cite As

Matteo Niccoli (2024). Perceptually improved colormaps (, MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R2007b
Compatible with any release
Platform Compatibility
Windows macOS Linux
Find more on Colormaps in Help Center and MATLAB Answers

Community Treasure Hunt

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

Start Hunting!
Version Published Release Notes

Replaced text labels in the screenshot

Uploaded new rainbow colormap with sawtooth shaped lightness profile. Included new example images and scripts, and deleted a few obsolete scripts. Updated reference links.

Added a new isoluminant colormap that wraps around the full hue range 0 - 2pi twice. Updated reference list with link to new blog post on IsoAZ and IsoAZ colormaps.

Corrected summary and added reference to a blog post by Steve Eddins for IsoAZ colormap

Replaced INTERP1(...,'CUBIC') with INTERP1(...,'PCHIP') as suggested by Jakob Nikolas in the comments. Added a new isoluminant colormap for cyclical (azimuth or phase).

On April 29th I loaded by mistake a previous release instead of the new one. This is the correct release.

Added missing switch statements for 'linearl' and 'linlhot'.
Added error check for minimum number of colors

Added a linear lightness rainbow colormap
Added a linear lightness adjusted heat colormap
Added first line to examples.m as suggested by COlin in the comments

Implemented Colin's first suggestion for examples.m

Added a 100% perceptual version of cube law rainbow and new examples and references.

updated contact email

flipped isoL colormap so red is on the high intensity side
added one more example
minor edits and typos corrected here and there

Added more examples and demonstrations

Added more examples in new file examples1.m
Added one of the reference papers (link disrupted)
Edited H1 line
Added justification paragraph
Modified REFERENCE AND acknowledgements in help
Removed MAC_OS hidden files