(c) 2010 Martin Krzywinski | mkweb.bcgsc.ca
TupleEncode - encoding a tuple into HSV color.

contents

introduction

methods

color charts

gallery

documentation

references

what is color encoding?

Color encoding, also called color mapping, is a method to represent numbers or text as colors. In order for color encoding to be useful, the output color scheme must be effective in helping to understand the input data and to identify patterns in it.

Typically encoding schemes use HSV color space (hue, saturation, value), which is more useful because it is possible to visually evaluate each HSV component independently. On the other hand, it is much more difficult to guess values, or even relative propotions, in RGB for most colors.

HSV is additionally useful for encoding periodic quantities - such quantities (e.g. cardinal direction) map naturally onto hue, which itself is periodic. In fact, hue is a very useful characteristic: not only periodic, it is perceptually continuous across the boundary (hue at 359° is perceptually close to hue at 1°) and small changes in hue are easily perceived.

how is color encoding useful?

Color encoding schemes are useful to help perceive the absolute or relative size of numbers. Because our eyes are very sensitive to changes in hue, a scheme that maps onto HSV can create encodings in which minor variation in input is easily identified.

Additionally, because color can be represented more compactly than the numbers it encodes (a single pixel can be used), a color encoded image can be used to convey multi-dimensional information. As long as the encoding scheme is sensible and the reader understands how the encoding was done, a large amount of information can be represented in a small space.

A classic example of color encoding is a 1-dimensional encoding that maps temperature onto a color. This is illustrated in the figure below, where color is used to show sea surface temperature. In this encoding temperature is mapped to a hue, with saturation and value kept constant.

This kind of encoding scheme is a false-color scheme. Typically this method maps a single value (e.g. intensity), associated with an (x,y) position (e.g. map coordinates), onto a rainbow of colors (low high). Because our vision is very sensitive to changes in hue — more so than to changes in value or saturation — a false-color scheme can more clearly demonstrate minor changes in input data.

Color coded sea surface temperature (Science News for Kids).

A false-color encoding can be adjusted to produce a large change in hue over a range of interest in the input data to further accentuate small changes in input.

A more complex encoding scheme would accept a 2-tuple as input (e.g. wind strength and direction for each position on a weather map) and assign a characteristic color to each combination of values. In this example, wind direction could be mapped onto the color wheel (hue) and strength could be encoded in the value (dark for low strength and bright for high strength).

encoding tuples

The encoding schemes discussed here methods that associate a color with a vector (a tuple). Methods and Perl modules for 2- and 3-element vectors are presented. This is in contrast to the temperature example above, which associated a color with a one-dimensional quantity (temperature).

The details of how a vector is encoded by a color will depend on what the purpose of the encoding is. What about the vector is important to represent visually? For example,

example - comparing 3 scatter plots

(c) 2006-2010 Martin Krzywinski mkweb.bcgsc.ca