CET Perceptually Uniform Colour Maps:
Download Page


Peter Kovesi
Geophysics & Image Analysis Group
Centre for Exploration Targeting
School of Earth and Environment
The University of Western Australia
peter.kovesi@uwa.edu.au

June 2014


Home Download Test Image Theory Software

Update June 2016: Small adjustments to some colour maps to reduce gamut clipping.

Summary

This website presents a collection of colour maps that have been designed to have uniform perceptual contrast over their whole range.

Many colour maps provided by vendors have highly uneven perceptual contrast over their range. Colour maps may have points of locally high colour contrast leading to the perception of false anomalies in your data when there is none. Conversely colour maps may also have 'flat spots' of low perceptual contrast that prevent you from seeing features in the data.

To illustrate this the colour maps shown below are rendered on a test image consisting of a sine wave superimposed on a ramp function. The amplitude of the sine wave is modulated from its full value at the top of the image to 0 at the bottom.

What we are hoping to see is the sine wave uniformly visible across the image from left to right. We also want the contrast level, the distance down the image, at which the sine wave remains discernible to be uniform across the image. At the very bottom of the image, where the sine wave amplitude is 0, we just have a linear ramp which simply reproduces the colour map. Given that the underlying data is a featureless ramp we should not perceive any identifiable features across the bottom of the image.

At the top row of the test image the sine wave amplitude from peak to trough is 10% of the total data range. It is not unusual for the sine wave pattern to completely disappear in parts of some vendor colour maps. On the other hand the perceptually uniform colour maps exhibit no false features and the sine wave pattern is uniformly visible across the full width of the test image.

More Information

Note the colour maps presented here are intended for the display of data that varies over a continuous range. For data sets containing a limited set of categorical values it is suggested that you refer to the work by Cynthia Brewer at www.colorbrewer2.org

Download

These colour maps are released under the Creative Commons BY License. A summary of the conditions can be found here. Basically, you are free to use these colour maps in anyway you wish as long as you give appropriate credit.

If you find this work useful please cite:
Peter Kovesi. Good Colour Maps: How to Design Them.
arXiv:1509.03700 [cs.GR] 2015


Adobe Colour Table CETperceptual_act.zip
Adobe's .act format for use within Photoshop.
ArcGIS style file CETperceptual_ArcGIS.style
The maps are approximated using multi-part ramps with 64 segments. Please note that I have had to apply an adjustment to the colour ramps in an attempt to compensate for some strangeness in the way ArcGIS converts CIELAB values in the style file to RGB. I have been unable to reconcile the ArcGIS conversion results with those I obtain from any other published conversion routines. I am not entirely satisfied with the result but I believe the final ramps, as rendered, are reasonably close to their original design.
CSV floating point RGB values in the range 0-1. CETperceptual_csv_0_1.zip
Can be used with the Madagascar package.
CSV integer RGB values in the range 0-255. CETperceptual_csv_0_255.zip
ER Mapper, Intrepid CETperceptual_ERMapper.zip
ER Mapper's .lut format. Used by Intrepid and I think these can also be used with MapInfo.
Geosoft Oasis montaj CETperceptual_tbl.zip
Geosoft's .tbl format.
GOCAD CETperceptual_GOCAD.zip
Paradigm GOCAD .cmap format.
ImageJ CETperceptual_ImageJ.zip
ImageJ's .lut format.
Julia PerceptualColourMaps.jl
For those working in Julia this package allows you to geneate all these colour maps for use with various Julia plotting packages.
Landmark DecisionSpace Geophysics CETperceptual_cl2.zip
Landmark's .cl2 format.
MagicPlot These colour maps are available in MagicPlot's format at magicplot.com/wiki/palettes
MATLAB CETperceptual_MATLAB.zip
Colour maps implemented as a set of MATLAB functions.
MicroImages TNTmips No need to download!
These colour maps are incorporated in their latest release.
ParaView CETperceptual_ParaView.xml
Load using: Color map editor -> Choose preset -> Import
Petrel, DUG Insight CETperceptual_alut.zip
Schlumberger Petrel .alut format. These can also be used with DownUnder GeoSolutions Insight.
Python github.com/bokeh/colorcet
This package gives you access to these colour maps for use with Python plotting programs such as Bokeh, Matplotlib, HoloViews GeoViews, and Datashader. Thanks to James Bednar
QGIS style file CETperceptual_QGIS.xml
The maps are approximated using multi-part ramps with 64 segments. Load the style file using the QGIS menu sequence:
Settings -> Style Manager -> Share -> Import
Surfer CETperceptual_clr.zip
Golden Software's Surfer .clr format.

Let me know of any other formats I should generate.

Please note that I have not been able to test all these file formats as I do not have access to all these packages. If you encounter any problems please let me know. Any other feedback you might have would also be appreciated.

Acknowledgments

This work was supported by the Centre for Exploration Targeting, School of Earth and Environment at The University of Western Australia.

I am indebted to Tom Horrocks for his help in generating the ArcGIS style file.

Organisation of the Colour Maps

The colour maps are organised according to the attributes: Linear, Diverging, Rainbow, Cyclic, and Isoluminant.


Linear colour maps are intended for general use and have colour lightness values that increase or decrease linearly over the colour map's range.


Diverging colour maps are suitable where the data being displayed has a well defined reference value and we are interested in differentiating values that lie above, or below, the reference value. The centre point of the colour map will be white, black or grey. It should be noted that, in general, diverging colour maps have a small perceptual flat spot at the centre. The exception being linear-diverging maps which avoid this problem.


Rainbow colour maps are widely used but often misused. It is suggested that they be avoided because they have reversals in the lightness gradient at yellow and red which can upset a viewer's perceptual ordering of the colours in the colour map. However, they are attractive and perhaps can have a legitimate use where the main aim is to differentiate data values rather than communicate a data ordering. I believe the two rainbow colour maps presented here have minimal badness though they do have localised perceptual flat spots at yellow and red.


Cyclic colour maps have colours that are matched at each end. They are intended for the presentation of data that is cyclic such as orientation values or angular phase data. They require particular care in their design (the standard colour circle is not a good map).


Isoluminant colour maps are constructed from colours of equal perceptual lightness. These colour maps are designed for use with relief shading. On their own these colour maps are not very useful because features in the data are very hard to discern. However, when used in conjunction with relief shading their constant lightness means that the colour map does not induce an independent shading pattern that will interfere with, or even hide, the structures induced by the relief shading. The relief shading provides the structural information and the colours provide the data classification information.

Colour map naming convention



Linear Colour Maps


linear_grey_0-100_c0_n256


linear_grey_10-95_c0_n256


linear_kryw_5-100_c64_n256


linear_kry_5-95_c72_n256


linear_green_5-95_c69_n256


linear_blue_5-95_c73_n256


linear_bmw_5-95_c86_n256


linear_bmy_10-95_c71_n256


linear_bgyw_15-100_c67_n256


linear_gow_60-85_c27_n256


linear_gow_65-90_c35_n256


linear_blue_95-50_c20_n256


linear_ternary-red_0-50_c52_n256


linear_ternary-green_0-46_c42_n256


linear_ternary-blue_0-44_c57_n256


Diverging Colour Maps


diverging_bwr_40-95_c42_n256


diverging_gwv_55-95_c39_n256


diverging_gwr_55-95_c38_n256


diverging_bkr_55-10_c35_n256


diverging_bky_60-10_c30_n256


diverging-linear_bjy_30-90_c45_n256


diverging-linear_bjr_30-55_c53_n256


diverging_bwr_55-98_c37_n256


diverging_cwm_80-100_c22_n256


diverging-rainbow_bgymr_45-85_c67_n256


Rainbow Colour Maps


rainbow_bgyrm_35-85_c69_n256


rainbow_bgyr_35-85_c72_n256


Cyclic Colour Maps


cyclic_mrybm_35-75_c68_n256


cyclic_mygbm_30-95_c78_n256


cyclic_wrwbw_40-90_c42_n256


cyclic_grey_15-85_c0_n256


Isoluminant Colour Maps


isoluminant_cgo_70_c39_n256


isoluminant_cgo_80_c38_n256


isoluminant_cm_70_c39_n256


diverging-isoluminant_cjo_70_c25_n256


diverging-isoluminant_cjm_75_c23_n256