Note: Images may be inserted into your messages by uploading a file attachment (see "Manage Attachments"). Even though it doesn't appear when previewed, the image will appear at the end of your message once it is posted.
Register Latest Topics

Author Comment

Registered: 01/29/06
Posts: 2
Reply with quote  #1 

In the online version, I read up to Chapter 6 and came across the "bullet graphs"... I like those and was wondering if there was a program that created them? or if you just draw those now? (see attachment)



Attached Images
Name: bulletgraph.png, Views: 8678, Size: 71.38 KB


Registered: 12/30/05
Posts: 740
Reply with quote  #2 
The bullet graph is a simple invention of mine to replace the circular gauges and meters that are commonly used on dashboards with a graph that provides a richer data display using much less space. As far as I know, only one dashboard vendor provides bullet graphs at this time--Visual Engineering (http://www.ve.com/kavachart/prod_va.html)--but others have requested the design specification, which I provide freely to anyone who asks. The bullet graphs that appear in the book were mocked up using Adobe Illustrator.

Stephen Few

Registered: 01/02/06
Posts: 245
Reply with quote  #3 

Here is a SAS/Graph version of Stephen's bullet graph, and the sas code used to produce this version.  SAS doesn't have a simple 'proc' to automatically do these yet, but just showing that it can be done ...




%let name=bullet;
filename odsout '.';


data mydata;
format myvalue comma7.0;
input mylabel $ 1-10 mygoal myvalue range1 range2 range3;
YTD Units 6000 7822 3500 5500 8000

proc sql noprint;
select range3 into :range3 from mydata;
quit; run;

data mydata; set mydata;
length myhtml $200;
  'Value: '||trim(left(put(myvalue,comma7.0)))||'0d'x||
  'Goal: '||trim(left(put(mygoal,comma7.0)))||
 ' ')||' '||

data myanno; set mydata;
length function $8 color $12 style $12 text $20;


/* Annotate 3 colored areas (bars), representing the 3 ranges of values.
   Use when='b' so these will show up 'behind' the real bar chart bar. */

xsys='2'; ysys='1'; style='solid'; when='b';

x=0; y=0; function='move'; output;
x=range1; y=100; function='bar'; color='gray88'; output;

x=range1; y=0; function='move'; output;
x=range2; y=100; function='bar'; color='graybb'; output;

x=range2; y=0; function='move'; output;
x=range3; y=100; function='bar'; color='graydd'; output;

/* Annotate a thick line, representing the 'goal' value */
x=mygoal; y=15; function='move'; output;
x=mygoal; y=85; function='draw'; line=1; size=1.5; color='black'; output;

/* Annotate the midpoint value label, so you'll have the flexibility to
   easily place multiple lines of text. */
xsys='1'; ysys='1';
x=0; y=70; function='label'; when='a'; position='4'; style='"arial/bold"'; size=9; text=trim(left(mylabel)); output;



 goptions xpixels=500 ypixels=200;

 ODS HTML path=odsout body="&name..htm"
 (title="Stephen Few's Bullet Graph")
 gtitle gfootnote
goptions border;

goptions gunit=pct htitle=11 htext=7 ftitle="arial/bold" ftext="arial";

axis1 order=(0 to &range3 by 1000) minor=none label=none offset=(0,0) style=0;

axis2 label=none value=(font="arial/bold" height=9 color=white) offset=(3,3);

pattern1 v=s color=black;

title "Bullet Graph";

proc gchart data=mydata anno=myanno;
 hbar mylabel / discrete
 type=sum sumvar=myvalue
 raxis=axis1 maxis=axis2
 des="" name="&name";


Attached Images
Name: bullet.gif, Views: 8571, Size: 2.91 KB


Registered: 01/23/06
Posts: 158
Reply with quote  #4 

Bullet graphs are implemented in the view that one sees on p 177 of this new book.  I wonder if anyone has written code to display the entire Sales Dashboard that we see on page 177.  It is an excellent display!



Bill Droogendyk

Registered: 12/30/05
Posts: 740
Reply with quote  #5 

I don't think that anyone has written code to precisely match the sales dashboard example that appears in Information Dashboard Design, but another contributor to this discussion, Grasshopper, has developed one that is similar using one of SAS' products. Perhaps he'll see this message and decide to show us his work.

Stephen Few

Registered: 01/02/06
Posts: 245
Reply with quote  #6 

I've written some SAS/Graph code to do an imitation of the entire dashboard as well.  I leave out the little lines on the left-hand side (because I didn't have the actual data values used to create the lines, and I'm not too keen on lines with no axes anyway - just a personal preference I guess ;)


Also, I added a few small enhancements to try to subtly improve the dashboard (it would really depend on the personal preferences of the sales manager who's using the dashboard whether these are "improvements" or not).  So, I'll just call them "variations" rather than enhancements/improvements ;)


I'll include the gif image of the SAS/Graph version below.  The code is quite long (over 1000 lines), so I'm not going to try to include it here, but I'll be happy to email it to anyone who wants a copy.  Note that the sas version also produces an html overlay, which provides html charttip/drilldown capability on the bars, etc, which is useful for analyzing the data.


- grasshopper



Attached Images
Name: sfew.gif, Views: 8624, Size: 25.94 KB


Registered: 07/20/06
Posts: 1
Reply with quote  #7 


Charlie Kyd has put together some of these using excel as well



Registered: 12/30/05
Posts: 740
Reply with quote  #8 
Yes, Charley has developed the means to create a bullet graph in Excel based on my design specification and has extended it in some useful ways as well.

Stephen Few

Registered: 02/07/11
Posts: 2
Reply with quote  #9 
First off i like to thank Stephan for the insight in good graph design and the way we represent data to our costumers. without it i wont present the data half as effective.
and wont the decisions upon that data be half as good.

im sorry to kick an old topic back to life.
but i have a simple question, that i hope can be answered quit directly.

what is the use of the "Target" marker? if the background shows us what is bad/good/excellent isn't the target always the line between good and excellent?

so we can de-clutter the graph just a bit more by not showing the target marker?
With best reguards,

the glass is neither half-full nor half empty is simply twice as big as need be.

Registered: 12/30/05
Posts: 740
Reply with quote  #10 

What you're referring to as the "target" marker is not necessarily a target. By definition, it is any relevant comparison value that provides meaningful context for the data. For example, if the measure that the bullet graph represents is year-to-date revenue, the comparison value might represent revenues earned year-to-date by this date last year. Even if the comparison represents a target, the qualitative states represented by the background colors (for example, poor, satisfactory, and good performance ranges) don't necessarily align precisely with the target. For example, you might define the good performance range to begin at a point slightly less than the target value or slightly greater than it. If your comparison value is a target and you've defined the good performance range to begin precisely at the target value, however, you wouldn't necessary need to include the target marker, for it would be redundant. You might still choose to include it, however, because it might be easier to quickly see that the measure exceeds or falls short of the target marker than it is to see if it extends into or falls short of the range or good performance indicated by the background color.

Stephen Few

Registered: 08/19/10
Posts: 167
Reply with quote  #11 
The target can be a number of things, and may not always be applicable.
The question that the target marker answers is the all important "compared to what?"

The target can be a budget goal, last year's number, a goal set by management, or any number of other such things.
It tells you where the current value is in relation to that value...while the graded areas behind give you an idea of just how good or bad that is.

Registered: 02/07/11
Posts: 2
Reply with quote  #12 
Stephen and JL thank you for taking the time to answer my question.

i understand you're use ideas for the use of the "Target"
in the dashboards I design im likely to give the user multiple insight in the data
i.e. one overview for the trend (line graph) and one more detail view(Bullet graph) i have been thinking a bout combining them to simplify the dashboard but my co-workers found it difficult to understand.

the glass is neither half-full nor half empty is simply twice as big as need be.

Registered: 06/08/11
Posts: 3
Reply with quote  #13 
I'm quite new to this whole world of data visualization, even though I've been doing graphs and charts since forever! Still, never too late to learn how to do them better!

Since I read Stephen's book on dashboard design yesterday, I've been trying to find a way to replicate bullet graphs in excel (my main reporting tool - I'm a marketer not a programmer!). I think I've found a solution - not quite as elegant as Stephen's, but fairly quick and easy to do, and I think does the job.

Basically, I have one line of data (either a row or column in excel, doesn't matter which, in the following order: Good, OK, Bad, Results, Comparator (target or last year etc - these can be multiple). The order is important, as excel will overlay the bars of the chart in this order - i.e. the first figure gets "laid down"  first, then the others on top. Make this into a bar chart (horizontal or vertical, doesn't matter).

Make sure you've got 5 (or more) different colour bars - if they are all the same colour, switch row/column so you have different data series - that way you can format them independantly.

Make the bars overlap completely (format selection, series options, and move the slider to "overlapped")

Now change the format of results and target data series to have no fill, and just an outline, making the outlines different (I did a heavy solid one for the results for emphasis, and a dotted one for the comparison, but it could be pale grey etc).

Remove non-data ink such as gridlines etc, and presto! a bullet graph!

I've added a picture of the results and would welcome feedback (the resolution's not brilliant, but you get the idea).

Attached Images
Name: Bullet_Graph_s.png, Views: 2668, Size: 8.74 KB


Registered: 06/08/11
Posts: 3
Reply with quote  #14 
When I went to bed last night I was still dreaming about bullet charts, and realised that you can just add another row / column of data to get multiple bullets charts for a dashboard (in excel). I've just made one and attached it.

It's a bit limited as I can't get the dashed outline to make a cross with actuals (for preattentive recognition) but I think it works OK as a compromise (i.e without a system that can actually draw them!).

Any feedback welcome!

Attached Images
Name: Bullet_Graph_-_multi_s.png, Views: 2680, Size: 9.98 KB


Registered: 06/18/07
Posts: 92
Reply with quote  #15 
Hi Ophelia,

As you mention, your solution provides a way of introducing qualitative states to a bar graph that works similarly to a bullet graph. However, because it doesn't have the black bar running down the center, the measure--which should be people's primary focus--lacks the visual salience it has in a bullet graph.

Your solution could work as a compromise if bullet graphs were not possible in Excel. However, it is actually possible to make bullet graphs in Excel. There are several sites that can tell you how to do it. Charley Kyd of ExcelUser provides a good tutorial, but if you do a web search, you'll find other tutorials as well. Alternatively, there are Excel add-ins, such as MicroCharts, that allow you to create bullet graphs with less work.

Previous Topic | Next Topic

Quick Navigation:

Powered by Website Toolbox - Create a Website Forum Hosting or Website Chat Room Hosting for your website.