[R] plotting time series using ggplots

Alison Macalady ali at kmhome.org
Thu Sep 16 08:51:14 CEST 2010

I would like to plot a bunch of tree ring width data (time series)  
using ggplots, but I'm having trouble figuring out how to do it.

My data is in a data.frame, with years as rownames and a distinct tree  
ring series in each column. So, something like this:

rwl<-matrix(rnorm(800), nrow = 100)
colnames(rwl) <- paste('V', 1:8, sep = '')

I have 2 specific things I'd like to do:
1) use stat_summary(), geom_line(), and either geom_smooth() or  
geom_ribbon() to plot the mean of the timeseries  (e.g. V1:V8) and  
error bands or confidence limits around the mean for each year. I  
cannot figure out how to do this except for this really clunky way:

h<-ggplot(rwl, aes(x=year))
h+ geom_line(aes(y=V1))  #plots one of the timeseries
ymax=as.data.frame( t(apply(rwl[1:8], 1, summary,na.rm=TRUE )) )[,4]
ymin=as.data.frame( t(apply(rwl[1:8], 1, summary,na.rm=TRUE )) )[,2]
h + geom_ribbon(aes(ymin=ymin, ymax=ymax)) 

2) I'd like to be able to plot all of the timeseries together, or plot  
them grouped by another variable (for example site), but I can't  
figure out how to get ggplot to plot all of the columns as Y data,  
without specifying each separate timeseries with a distinct  

Any suggestions on either problem would be greatly appreciated!

Alison Macalady
Ph.D. Candidate
University of Arizona
School of Geography and Development
& Laboratory of Tree Ring Research

More information about the R-help mailing list