Hello Kerstin, I had done something like this in the past but can't find it any more, so I've put up a very raw example you might want to sophisticate upon. The idea is that of drawing an empty high-level plot and then putting some low-level elements (mainly bars and connecting lines) into it according to the coordinates of the data. Attached below, I hope it helps and avoids you the sin of importing ppt charts into LaTeX (aaargh!).
PS The 'grid' package can help you produce more sophisticated (possibly more "corporate-like", if this is a virtue...) graphs while retaining the level of automation possible with R: e.g., for using Sweave for automatic report generation. I'm sending you some examples by separate mail. Best, Giovanni examples: cascadeplot(rnorm(10)); cascadeplot(c(3,2,-7,5,8,3,-9,10)) cascadeplot <- function(x, barwidth=2, barspace=1, colpalette=rep(grey(0.5), length(x)), linecol="orange", ...) { ## how many bars? one for each data point barnum <- length(x) ## total graph width grw <- (barnum+1)*barspace+barnum*barwidth ## graph height l.grh <- min(cumsum(x),0) u.grh <- max(cumsum(x))+1 ## draw an empty plot with the required dims ## (passing on any graphic parm you like, e.g. 'title') plot(0:grw, ylim=c(l.grh,u.grh), xlim=c(0,grw), type="n", ...) ## draw x axis lines(c(0,grw), c(0,0), col="blue") ## init vector (this will be useful later) ytxtpos <- rep(NA, length(x)) ## for each data point draw a polygon ## starting from the level reached by the ## previous bar for(i in 1:length(x)) { ## each bar has 4 verices, abcd ## x coordinates for them: ## left vertices: ab, right: cd ## so bars are drawn like a->b->c->d leftx <- barspace+(barspace+barwidth)*(i-1) rightx <- leftx+barwidth xcoo <- c(leftx, leftx, rightx, rightx) ## y coord.: ## lower y: if(i==1) { lowy <- 0 } else { lowy <- cumsum(x)[i-1] } highy <- cumsum(x)[i] ycoo <- c(lowy, highy, highy, lowy) polygon(xcoo, ycoo, col=colpalette[i], ...) ## now draw the connecting lines between ## the current and the previous bar if(i > 1) { lines(x=c(leftx-barspace,leftx), y=c(lowy,lowy), col=linecol) } ## save top-bar position for label ytxtpos[i] <- max(lowy, highy)+0.05*(u.grh-l.grh) } ## lastly, put the values on top of the bars xtxtpos <- (1:length(x))*(barwidth+barspace)-barwidth/2 text(xtxtpos,ytxtpos,labels=as.character(x)) } ## original message below ------------------------------ Message: 157 Date: Tue, 03 Feb 2009 11:30:51 +0100 From: Kerstin <kerstin.ba...@open-innovation-projects.org> Subject: Re: [R] ThinkCell type waterfall charts in R? To: Jim Lemon <j...@bitwrit.com.au> Cc: r-help@r-project.org Message-ID: <49881cdb.3090...@open-innovation-projects.org> Content-Type: text/plain; charset="iso-8859-1"; Format="flowed" Jim Lemon wrote: > Kerstin wrote: >> Hi all, >> >> with PowerPoint and ThinkCell one can draw something they call >> waterfall chart and it looks like this: >> http://www.think-cell.com/products/images/waterfall.gif >> >> I found discussions on waterfall charts in the archive of this >> mailinglist, but unfortunately they looked totally different. Other >> names for this type of plot seem to be bridge chart, cascade chart, >> stair case chart, etc. but neither of them brought successful >> results. So I decided to ask you directly on the list. >> >> Does anyone have an idea on how I could plot this type of chart in R? > Well Kirsten, it's a real challenge trying to find something that you > _can't_ plot in R. Perhaps if you sent some data to the mailing list > and a description of how the various counts (?) are related to one > another, some R-nut may reply with what you want. > > Jim Thanks a lot for your quick reply. In the attached pdf you can see the chart I would like to draw with R. I could of course make my life easier and use the Power Point chart, but importing a ppt chart into Latex would not make me sleep very well, besides the fact that all other plots in my document will come from R and I don't want this one to look totally different... Cheers Kerstin -------------- next part -------------- A non-text attachment was scrubbed... Name: Waterfall.pdf Type: application/pdf Size: 9761 bytes Desc: not available URL: <https://stat.ethz.ch/pipermail/r-help/attachments/20090203/6b6e3787/att achment-0001.pdf> ------------------------------ Giovanni Millo Research Dept., Assicurazioni Generali SpA Via Machiavelli 4, 34132 Trieste (Italy) tel. +39 040 671184 fax +39 040 671160 Ai sensi del D.Lgs. 196/2003 si precisa che le informazi...{{dropped:13}} ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.