# Visualize effects of hurdles on user numbers

I have the following data:

1000 users were invited
990 emails delivered successfully
200 visited the system
60 tried to create an account
58 tried to create an account with a valid email
50 successfully created an account (i.e. chose a secure password)
40 participated by voting
10 posted something


While I could use a bar graph, the proportions of 60:58:50 would likely be lost. If I'd use a logarithmic scale, the proportions would be distorted and the feeling of numbers would be lost.

Is there a good way to represent both the (significant) loss in user attention due to the number of hurdles as well as the effect of each hurdle?

-
When doing visualization, the question is what facts do you want to show with data, not how to just show data (table is way better than any graphic in the latter case). – mbq Dec 2 '11 at 13:48
@mbq Sorry, I'm new at this. I tried to point it out in the last sentence; I want to show two basic facts: How few users end up actually posting, and how many are lost in each step. – phihag Dec 2 '11 at 13:55
To emphasize the #'s lost in each step, you could convert the data to a "percent conversion" which would show that there's a much bigger drop off between visiting the system and creating an account than between using a real address and actually making their account. – Chase Dec 2 '11 at 14:14
xkcd.com/radiation – whuber Dec 2 '11 at 14:35

Here's one attempt using R and ggplot2, I'm sure there may be others that are more effective.

library(ggplot2)
dat <- data.frame(Number = c(1000, 990, 200, 60, 58, 50, 40, 10),
Action = c("Emails Invited", "Emails Received", "Visited System", "Tried To Create Account",
"Used Valid Email To Create Account", "Successfully Created Account",
"Participated by Voting", "Posted Content"),
stringsAsFactors = FALSE)

#Create data needed for geom_segment
dat <- transform(dat, lowval = -(Number / 2)
, highval = Number / 2
, index = rev(1:nrow(dat)))

#plot it
ggplot(dat, aes(x = lowval, xend = highval, y = index, yend = index)) +
geom_segment(size = 4, colour = "steelblue") +
geom_text(aes(x = 0, y = index - 0.25, label = paste(Number, Action, sep = " ")), size = 3.5) +
theme_bw(18) + #Make default font a bit bigger
opts(title = "Effects Of Hurdles On User Numbers") +
opts(axis.text.x = theme_blank(), axis.title.x=theme_blank()) +
opts(axis.text.y = theme_blank(), axis.title.y=theme_blank())


-
 I like it! It handles the problem with confusing areas in funnel charts (see this recent blog post by Jon Peltier about that issue), but still shows the decreasing proportion in an IMO visually pleasing way. – Andy W Dec 2 '11 at 14:39 Unfortunately, the center alignment seems to significantly hinder users in understanding what the chart shows. I left-aligned it. – phihag Dec 5 '11 at 14:26 @phihag - Bummer! It's essentially a bar chart then, but you could align the text labels to the right to give a bit different feel if you want. Good luck. – Chase Dec 5 '11 at 15:16

Like Chase suggests, funnels or funnel-like charts are a classic way to share this information. Another thing you might check out is the Waterfall chart, but I think those are good at absolute sizes, not relative sizes.

I would suggest one very different approach - spreadsheet simulation.

Often we find ourselves in situations where intuitive reasoning is hard to shake, even with the facts right in front of us. I have found that a good way to make those facts more influential is through simulation that shows how much a change can affect the end result. A simple conversion funnel like this can be easily converted into a spreadsheet model that starts off with 1,000 users, and reduces them with a % conversion at each step. Then you can play with different strategies - "what if we made it 5% easier to choose a secure password by using live AJAX-y feedback" or "what if we made the email more interesting so 10% more people would click the link?"

Such a simulation is a very basic and limited way of forecasting. In reality, a change in the email that increases the email click rate can easily diminish conversion across all of the following steps, because you're reaching users who are further from your core target, and it could also easily increase conversion across the following steps because you increased people's interest and motivation in finishing. But the value of this is that it helps to focus people on the big picture - which changes, at a first glance, will have the most impact at the end of the funnel?

-