Chernoff Faces Project

The above is only an image. It won't work online because of security restrictions on the use of loadStrings. You can download the source code and run it on your computer …


Processing Source Code


The main aim, for me, of this project was to find a way of using live data feeds from the web to produce something in Processing. I was partially successful in this - I have made a facial expression-based glyph that works as a desktop application, but it won't work on the web because of security restrictions.

The choice to use Chernoff Faces, or something based on them, was made on a bit of a whim - I mentioned them (I quite like their silliness and their failure as an information visualisation tool) and Martin thought they would be good to work with and that I should focus on the data in a single stock quote. The next problem was how to use a Chernoff face, generally used to represent up to 18 variables, for such a small amount of data.

Finding economic data on the web is easy, but finding (and deciphering) usable, raw data is more difficult. I used single stock data from Yahoo Finance in .csv format, but working out what the numbers meant required detective work and a bit of guessing.

I found a partial solution to the problems with Chernoff faces and to the problem of using a small amount of data by mapping onto whole facial expressions - movements of groups of features - rather than individual features. The research I did on Paul Ekman helped greatly with this.

Drawing the face in Processing also provided some challenges: The mouth and eyes need to pass from downturned, through neutral to upturned and this wouldn't work using ellipses or arcs. I used bezier curves for flexibility but found them tricky to work with.

The last challenge was calibrating the face. Given the current economic climate, historical data is not very useful for predicting suitable ranges for the variables, e.g. I can't compare a stock quote with the 52wk average and predict how much lower it might go. The solution I used was to plot the quote against the day's range, both of which are updated at the same time. The quote never goes off scale because the scale expands to fit.

The result of this project is the Unchernoff Face: one facial expression which represents how well a single stock is doing compared to the day's range, and how fast the price is changing. The higher the last trade, the happier the face will look. The faster the price is changing, the more surprised/amazed/afraid the face will look.

Things I will take away from this project :

  • thinking about my virtual creatures as glyphs - data points with lots of variables affecting their appearance and behaviour - like a genotype.
  • I don't want to use Processing. I need to think about my work in a more visual way and this is difficult with Processing as every line you draw has to be worked out in numbers first.
  • I MUST allow enough time in a project for calibration.
  • Chernoff Faces are still rubbish.


Here's my research slideshow. Most of it makes sense, even without me standing in front of it going "blah blah"

Live Data Face mk. 1

Chernoff Faces and Glyphs research

Facial Expression research

Pareidolia research

Individual expressions …


Market Data research


Processing research

Add a New Comment
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License