Why Should Engineers and Scientists Be Worried About Color? (1996)
research.ibm.com
research.ibm.com
The prettiest gradients won't look good if the output color doesn't match the displays gamma.
Gamma is a very complicated subject. Also the "legacy" aspect as mentioned, CRT had it, LCDs don't BUT to be "backwards compatible" they add this nonlinearity.
Looks like the same discussion of why are we talking about PAL/NTSC and interlacing in digital video formats.
You should do any calculations in linear space (and possibly with a temporarily higher bit depth) but a linear display would not be desirable.
Imagine having a room with 10 independently controlled LEDs of equivalent brightness to a 10-watt incandescent lightbulb. Try to visualize the difference from going from 0 (pitch black) to 1 light, to 2, and then imagine 9->10. If you try this IRL you will notice that human brightness perception is very non-linear. To get the most bang per light switch, we need to make the later lightbulbs brighter to get the same punch. This is what monitors do with their bit depth.
It makes good sense for human perception to be non-linear: Earth has a very wide range of brightnesses we need to live in, and the difference in information we can acquire from being out in the sun vs. in the shade is not commensurate with the difference in brightness.
If you are in a very, very dark place (not a city at night) you will experience a very distinct non-blackness. Your eyes (brain?) are turning up the gain to try and extract information. (I don't know if this happens in a perfectly dark place.)
Uh sorry this was rambling. I should read that article...
But it's hard enough considering human non-linearity without adding any other non-linearities along the way (like the CRT ones)
What do we mean by linear? A linear change in RGB equals a linear change in photons output? Let's call this physically-linear.
Or do we mean that if we sit 100 people down and show them rgb(32, 64, 16) and then rgb(64, 128, 32) that they agree that the second is "twice as bright"? Let's call this perceptually-linear.
Physical and perceptual linearity are not the same and have different use cases. Physical linearity is important when you are simulating lighting: shadows, shading, etc. etc.
Perceptual linearity is probably more important when it comes to scientific visualization, because we are trying to use colour as a form of transmission of information from the computer into our heads, so it makes sense to "spread" out the colour as much as possible (note: I do not have a background in visualization, just experience in CG. I welcome input from those who know the field better.)
Physical-linearity is as "easy" as calibrating to your monitor (gamma, etc.) Perceptual-linearity is... harder. You can start by investigating CIE-LAB colour spaces etc., but the story most definitely does not end there (for example, check out "Interaction of Color" by Josef Albers.)
The big problem with “rainbow” gradients is that they typically have some sections with steep change in lightness, and other sections of nearly uniform lightness, mixed together with nonuniform (in terms of human perception) hue and chroma changes from one part of the gradient to another. It’s very difficult to compare the slopes of a rainbow-gradient-mapped function across different parts of the gradient, and in some sections of the gradient very difficult to visually distinguish salient details.
It would be much better to have uniform changes in lightness. The simplest such map just goes from black to white in a perceptually uniform way. But if more distinctions are needed, then another possible method is to make the lightness attribute sort of sawtooth (or can potentially use more of a triangle wave, in some cases), while keeping chroma relatively constant and letting hue change close to uniformly. This makes a few places where the perceived lightness has either a change of slope or a discontinuity, but since the rate of lightness change is otherwise constant, it is still fairly easy to make comparisons. [I really should make a proper article/essay about this at some point, with some demonstrative images / interactive widgets: it’s much easier to show visually than to describe in text]
In the case of the chart under discussion, if the goal is to show the slope across the shoreline boundary and compare it to the slope elsewhere, I would recommend having uniform lightness change from dark [low elevation] to light [high elevation], combined with a hue discontinuity at the shore boundary. Because lightness is the most perceptually salient color attribute for noticing object boundaries, textures, fine details, motion, etc., it would still be possible to have a good idea of the slope across the shoreline boundary, while being able to perceive the boundary when closely examining the image.
[Note: such schemes will also generally be helpful for colorblind users]
The first map only shows the earth crust, so it's useful if you're only concerned with that. The second map, with the step at 0, raises the perception of a "hidden" feature, which is the ocean level.
Publishers, please use color only when it's really neccessary, and then please have some colorblind person available for sanity checking! While it might be hard to find someone with the less common variants, you can at least cover red-green.
I hope you are joking. Maybe after they get done doing that we can have an article on smells with smells that people who can't smell can smell.
Though note, it’s not really ideal for making gradients, since its “sequential” schemes only go up to 9 distinct categories, and its “diverging” schemes only go up to 11 distinct categories. If you took the suggested colors and made them equally spaced control points in a photoshop/CSS/etc. gradient, you’d get a reasonable outcome.
Also for gradients, I wrote a pretty simple colormap editor here: http://colormap.org/. This maybe gives too much freedom, since it doesn't enforce any best practices as far as colorblindness is concerned. But if you make sure the brightness (the gray line) is monotonic, it's a step in the right direction.
I wrote a library similar to what you describe for matlab in java: http://www.dishevelled.org/color-scheme/
Justice in Croatian, Serbian, Macedonian, Bosnian and some other Slavic languages is "pravda". Predominantly in the South Slavic group it seems.