In What your brain does with colours when you are not “looking”, part 1, I displayed some audio spectrogram data (courtesy of Giuliano Bernardi at the University of Leuven) using 5 different colormaps to render the amplitude values: Jet (until recently Matlab’s standard colormap), grayscale, linear lightness rainbow, modified heated body, and cube lightness rainbow. I then asked readers to cast a vote for what they thought was the best colormap to visualize this dataset.
I was curious to see how all these colormaps fared, but my expectation was that Jet would sink to the bottom. I was really surprised to see it came on top, one vote ahead of the linear lightness rainbow (21 and 20 votes out of 62, respectively). The modified heated body followed with 11 votes.
My surprise comes from the fact that Jet carries perceptual artifacts within the progression of colours (see for example this post). One way to demonstrate these artifacts is to convert the 2D map into a 3D surface where again we use Jet to colour amplitude values, but we use the intensities from the 2D map for the elevation. This can be done for example using the Interactive 3D Surface Plot plugin for ImageJ (as in my previous post Lending you a hand with image processing – introduction to ImageJ). The resulting surface is shown in Figure 1. This is almost exactly what your brain would do when you look at the 2D map colored with Jet in the previous post.
In Figure 2 the same data is now displayed as a surface where amplitude values were used for the elevation, with a very light sun shading to help a bit with the perception of relief, but no colormap at all. to When comparing Figure 1 with Figure 2 one of the artifacts is immediately recognized: the highest values in Figure 2, which honours the data, become a relative low in Figure 1. This is because red has lower intensity than yellow and therefore data colored in red in 2D are plotted at a lower elevation than data colored in yellow, even though the amplitudes of the latter were lowest.
For these reasons, I did not expect Jet to be the top pick. On the other hand, I think Jet is perhaps favoured because with consistent use, our brain, learns in part to accommodate for these non-perceptual artifacts in 2D maps, and because it has at least two regions of higher contrast (higher magnitude gradient) than other colormaps. Unfortunately, as I wrote in a recently published tutorial, these regions are randomly placed in the colormap, and the gradients are variable, so we gain on contrast but lose on faithfulness in representing the data structure.
Matt Hall wrote a great comment following the previous post, really making an argument for switching between multiple colormaps in the interpretation stage to explore and highlight features in both the signal and the noise in the data, and that perhaps no single colormap is best overall. I agree 100% on almost everything Matt said, except perhaps on the best overall: looking at the 2D maps, at least with this dataset, I feel the heated body could be the best overall colormap, even if marginally. In Figure 3, Figure 4, Figure 5, and Figure 6 I show the 3D displays obtained by converting the 2D grayscale, linear lightness rainbow, modified heated body, and cube llightness rainbow, respectively. Looking at the 3D displays altogether gives me a confirmation of that feeling.
What do you think?
Thanks for the post Matteo.
I agree with you that “modified heated body” is probably the most appealing in this case, although “linear lightness rainbow” has become my default colormap and, maybe, I’m getting a bit biased on the choice 🙂
Among the last 4, I’d say that the “cube llightness rainbow” is the one that, to me, conveys the most difficult information to interpret.
It took me a while to get this one finished, but I think it came out interesting.
Have you tried Parula, the new default Matlab colormap?
The cube lightness rainbow is less succesfull because it has the least total lightness contrast (60% of the full 1-100 range). This is cvclose to the minimum contrast that should be used in any colormap (according to Rogowitz and Kalvin in The” Which Blair Project”: a quick visual method for evaluating perceptual color maps).
Hi Matteo…the ‘read more about this post’ link seems to be broken. Great work on the blogging blitz! Evan
— Sent from Mailbox
I’m not done yet, there’s one more post in the blitz.
About the link: sometimes a post will get published with the date of the first draft instead of the date it was posted. If I change it, then the email link is lost. I have to live with this. Would there be a workaround with wordpress.org?
Matteo – two guesses about the votes for jet: familiarity, and a perceived “greater contrast.” I have heard the contrast comment from a MATLAB user who preferred jet to parula for that reason. jet goes dark to bright in the lower third and bright to dark in the upper third (roughly) of the colormap, so within certain data ranges there is a greater contrast. (For this discussion, I’m defining contrast as rate of change of lightness.) Parula, as well as the other colormaps shown above, go dark to bright over the whole data range, so the rate of change of lightness is lower.
Thanks for your feedback.
I did see the comment from your reader, and I think you and I are on the same page on this. My guess was also about greater contrast. If you look at this figure of the change in lightenss with sample number (it’s not Jet’s but it is very similar to it, so for the sake of discussion it will work) it is obvious that there are areas of very steep gradients (change of lightness) like in the blue to green and yellow to red portions. But the price you pay is that there are also areas of very low gradient (green, blue, violet) where you lose almost all contrast, which will obfuscate subtle anomalies in your data. On top of that you have no control of where these areas are located, so a lot of effort goes into fitting these artifacts to your data to take advantage of the higher contrasts.
On familiarity, again we are in full agreement. This tendency is described really well in Evan Bianco’s post on defaults (The dangers of default disdain) Kevin Kelly comments: “…defaults are ‘sticky’. Many psychological studies have shown that the tiny bit of extra effort needed to alter a default is enough to dissuade most people from bothering, so they stick to the default…”.
Pingback: New rainbow colormap: sawthoot-shaped lightness profile | MyCarta