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