Creating a Pareto Chart with ggplot2 and R
The bars in ggplot2 are ordered by the ordering of the levels in the factor.
val$State <- with(val, factor(val$State, levels=val[order(-Value), ]$State))
Subsetting and sorting your data;
valact <- subset(val, variable=='actual')
valsort <- valact[ order(-valact[,"Value"]),]
From there it's just a standard boxplot()
with a very manual cumulative function on top:
op <- par(mar=c(3,3,3,3))
bp <- barplot(valsort [ , "Value"], ylab="", xlab="", ylim=c(0,1),
names.arg=as.character(valsort[,"State"]), main="How's that?")
lines(bp, cumsum(valsort[,"Value"])/sum(valsort[,"Value"]),
ylim=c(0,1.05), col='red')
axis(4)
box()
par(op)
which should look like this
(source: eddelbuettel.com)
and it doesn't even need the overplotting trick as lines()
happily annotates the initial plot.