Solved – Most effective use of colour in heat/contour maps

data visualization

It's quite common to use heat/contour maps when presenting time-frequency EEG findings. The colour scheme often chosen (and one that I like and use) is the "jet" colour scheme (see e.g., google image search time-frequency EEG). I'm wondering if there are any better colour schemes for presenting these plots, and/or guidelines for the presentation of such maps.

e.g., from R base library

#Volcano
x <- 10*(1:nrow(volcano))
y <- 10*(1:ncol(volcano))
image(x, y, volcano, col = terrain.colors(100), axes = FALSE)

# With Jet colours
jet.colors <-  colorRampPalette(c("midnightblue","blue", "cyan","green1", "yellow","orange","red", "darkred"), space="Lab")
image(x, y, volcano, col = jet.colors(100), axes = FALSE)

Best Answer

Rainbow color maps, as they're often called, remain popular despite documented perceptual inefficiencies. The main problems with rainbow (and other spectral) color maps are:

  • The colors are not in a perceptual order
  • The luminance bounces around: our eyes are mostly rods for luminance, not cones for color
  • We see hues categorically
  • Hues often have unequal presences (e.g., wide green and narrow yellow)

On the plus side:

  • Spectral themes have high resolution (more distinguishable color values in the scale)
  • There's safety in numbers; such themes are still quite common

See Rainbow Color Map (Still) Considered Harmful for discussion and alternatives, including black-body radiation and grayscale.

If a diverging scheme is suitable, I like the perceptually uniform cool-to-warm scheme derived by Kenneth Moreland in his paper, Diverging Color Maps for Scientific Visualization. It and other schemes are compared with images in the ParaView wiki, though with a perspective of coloring a 3-D surface, which means the color scheme has to survive shading effects.

Recent blog post with more links and Matlab alternatives: Rainbow Colormaps – What are they good for? Absolutely nothing!

Recommendation: First try grayscale or another monochromatic gradient. If you need more resolution, try black-body radiation. If the extremes are more important than the middle values, try a diverging scheme with gray in the middle, such as the cool-to-warm scheme.

Images from the ParaView wiki page:

Rainbow: enter image description here

Grayscale: enter image description here

Black-body: enter image description here

Cool-to-warm: enter image description here