Bullet Graph in R

Bullet graphs are an effective and efficient visual representation for key indicators (e.g. KPI), that were proposed by Stephen Few. I find them highly suitable to build dashboards. For this purpose I developed an implementation in R to draw such graphs.

In summary a bullet graph is a variation of a bar graph with additional references that consist of a thick line that represents the reference point (e.g. benchmark, goal, or previous value) and a background that identifies three levels (e.g. Low-Medium-High, Bad-Average-Good, etc.).

The figure below illustrates the main components, though a complete specification is available on Few’s web site.

Bullet Graph elements (from Wikipedia)

The function bulletgraph() provides a simple interface to plot a bullet graph, for instance to reproduce the example above we can use the following statements:

par(mfrow=c(2,1), mar=c(2,9,.1,1))

bulletgraph(x=270,ref=260,limits=c(0,200,250,300),
            name= "Revenue 2005 YTD",subname="(U.S. $ in thousands)",
            colored=F)

bulletgraph(x=270,ref=260,limits=c(0,200,250,300),
            name= "Revenue 2005 YTD",subname="(U.S. $ in thousands)")

Which generates the following diagram:

Bulletgraph

Example of generated bullet graph

The code is available as open-source under the GPL at:
http://softeng.polito.it/software/R/BulletGraph.R

Enjoy and let me know!

Update: added an option (colored=F) to have gray scale background (as recommended in the specification), and a subtitle to be able to reproduce the example.

Update 2: now the revised and tested code, with documentation too, is available on GitHub, here: https://github.com/mtorchiano/MTkR/wiki/Bullet-Graph

Airbus A340-600 Infotainment

I recently happened to travel on a Lufthansa A340-600 between Frankfurt and Vancouver. I certainly appreciated the on-board passenger infotainment system: each passenger has his own touch LCD display with a selection of music, movies, and other information.

My first impression is the system is not very much responsive: maybe by design to avoid unwanted touches while moving to/from the seat or simply worn out (alarming for a quite new plane).

On my way back the system was irresponsive, I could not even turn it off, since apparently even the on/off button is part of the touch-screen. I asked to attendants and they kindly rebooted the system, so I could see the startup screen:

a340-600-infotainment

So it appears they are using Windows CE and loading the system image through a serial line.