Perceptually improved colormaps
Updated 14 Nov 2014
PMKMP Returns perceptually balanced colormaps
PMKMP(N,SCHEME) returns an Nx3 colormap.
%% Example1: 128-color rainbow with cubic-law luminance (default)
%% 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.
See also: JET, HSV, GRAY, HOT, COOL, BONE, COPPER, PINK, FLAG, PRISM, COLORMAP, RGBPLOT
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: firstname.lastname@example.org
Release date: November 2014
Matteo Niccoli (2023). Perceptually improved colormaps (https://www.mathworks.com/matlabcentral/fileexchange/28982-perceptually-improved-colormaps), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform CompatibilityWindows macOS Linux
Inspired by: Spectral and XYZ Color Functions, Shaded pseudo color, cline, MakeColorMap, Light Bartlein Color Maps, Colorspace Transformations
Inspired: paruly, colormapline - color-changing 2D or 3D line, MatPlotLib Perceptually Uniform Colormaps
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!
Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.
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 a linear lightness rainbow colormap
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 more examples and demonstrations
Added more examples in new file examples1.m