Suppose you have a large amount of data that you need to understand somehow. If the data has 2 or 3 important aspects, and the others can be ignored, then you can quite easily draw a graph. However, when the number of important dimensions is greater it rapidly gets much harder to visualise.

The problem of how best to visualise high-dimensional data is an active area of current research, especially due to the increasing size of the datasets being generated and used in everyday life, and the improvements in computational and graphical tools.

In 1973 the statistician Herman Chernoff had the idea to represent higher dimensional data as cartoon faces. He believed this would take advantage of our excellent natural ability to recognise facial expressions. By making more extreme data values correspond to more extreme facial features, we can more easily identify them amongst all the other data.



Funny Faces
Chernoff faces for 12 dimensional data

In this app 12 facial features are chosen, and each can be assigned a value from −5 to +5. The middle point, 0, corresponds to a neutral representation of the specific feature. Any face is thus fully described by a vector of 12 values.

Choose various values and see the face that results, and then try adjusting the value or switching to opposite values (e.g. toggling the nose shape between +3 and -3 say). The controls on the right will let you manage individual features, whereas the controls on the bottom will adjust the values for all features at once.

In this implementation the face, eye and hair colours are used simply to provide some variation and are not linked to the data values.

Controls

↑ ↓ all values up or down by 1, 🎲 random, ☯ toggle opposite (e.g. 3 ⇆ -3), ➖ set all neutral,
â†Šī¸Ž undo last bulk change, 🌈 change colours, 💾 save, âš™ī¸ autogenerate 8 faces

Saved faces — click a face to reload the corresponding settings