# trajectory plot (growth curve)

9 messages
Open this post in threaded view
|
Report Content as Inappropriate

## trajectory plot (growth curve)

 Hi there, I want to make trajectory plots for data as follows: ID      time    y 1       1       1.4 1       2       2.0 1       3       2.5 2       1.5     2.3 2       4       4.5 2       5.5     1.6 2       6       2.0 ... That is, I will plot a growth curve for each subject ID, with y in the y axis, and time in the x axis. I would like to have all growth curves in the same plot. Is there a simple way in R to do it? Thanks a lot! Lei Liu Associate Professor Division of Biostatistics and Epidemiology Department of Public Health Sciences University of Virginia School of Medicine http://people.virginia.edu/~ll9f/______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|
Report Content as Inappropriate

## Re: trajectory plot (growth curve)

 On Mon, Aug 23, 2010 at 3:58 PM, Lei Liu <[hidden email]> wrote: > Hi there, > > I want to make trajectory plots for data as follows: > > ID      time    y > 1       1       1.4 > 1       2       2.0 > 1       3       2.5 > 2       1.5     2.3 > 2       4       4.5 > 2       5.5     1.6 > 2       6       2.0 > > ... > > That is, I will plot a growth curve for each subject ID, with y in the y > axis, and time in the x axis. I would like to have all growth curves in the > same plot. Is there a simple way in R to do it? Thanks a lot! > Try this. Lines <- "ID      time    y 1       1       1.4 1       2       2.0 1       3       2.5 2       1.5     2.3 2       4       4.5 2       5.5     1.6 2       6       2.0" library(zoo) # z <- read.zoo("myfile.dat", header = TRUE, split = 1, index = 2) z <- read.zoo(textConnection(Lines), header = TRUE, split = 1, index = 2) plot(z) # each in separate panel plot(z, col = 1:2) # all on same plot in different colors ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|
Report Content as Inappropriate

## Re: trajectory plot (growth curve)

 On Mon, Aug 23, 2010 at 4:16 PM, Gabor Grothendieck <[hidden email]> wrote: > On Mon, Aug 23, 2010 at 3:58 PM, Lei Liu <[hidden email]> wrote: >> Hi there, >> >> I want to make trajectory plots for data as follows: >> >> ID      time    y >> 1       1       1.4 >> 1       2       2.0 >> 1       3       2.5 >> 2       1.5     2.3 >> 2       4       4.5 >> 2       5.5     1.6 >> 2       6       2.0 >> >> ... >> >> That is, I will plot a growth curve for each subject ID, with y in the y >> axis, and time in the x axis. I would like to have all growth curves in the >> same plot. Is there a simple way in R to do it? Thanks a lot! >> > > Try this. > > Lines <- "ID      time    y > 1       1       1.4 > 1       2       2.0 > 1       3       2.5 > 2       1.5     2.3 > 2       4       4.5 > 2       5.5     1.6 > 2       6       2.0" > > library(zoo) > > # z <- read.zoo("myfile.dat", header = TRUE, split = 1, index = 2) > z <- read.zoo(textConnection(Lines), header = TRUE, split = 1, index = 2) > > plot(z) # each in separate panel > plot(z, col = 1:2) # all on same plot in different colors > or better: plot(na.approx(z)) plot(na.approx(z), col = 1:2) ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|
Report Content as Inappropriate

## Re: trajectory plot (growth curve)

 In reply to this post by Lei Liu-2 and some more options... dat <- structure(list(ID = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 2L),   .Label = c("1", "2"), class = "factor"),   time = c(1, 2, 3, 1.5, 4, 5.5, 6),   y = c(1.4, 2, 2.5, 2.3, 4.5, 1.6, 2)),   .Names = c("ID", "time", "y"),   row.names = c(NA, -7L), class = "data.frame") library(lattice) xyplot(y ~ time|ID, data = dat, type = 'l') xyplot(y ~ time, data = dat, group = ID, type = 'l') library(ggplot2) qplot(time, y, data = dat, facets = .~ID, geom = 'line') qplot(time, y, data = dat, group = ID, color = ID, geom = 'line') hth, Kingsford Jones On Mon, Aug 23, 2010 at 1:58 PM, Lei Liu <[hidden email]> wrote: > Hi there, > > I want to make trajectory plots for data as follows: > > ID      time    y > 1       1       1.4 > 1       2       2.0 > 1       3       2.5 > 2       1.5     2.3 > 2       4       4.5 > 2       5.5     1.6 > 2       6       2.0 > > ... > > That is, I will plot a growth curve for each subject ID, with y in the y > axis, and time in the x axis. I would like to have all growth curves in the > same plot. Is there a simple way in R to do it? Thanks a lot! > > Lei Liu > Associate Professor > Division of Biostatistics and Epidemiology > Department of Public Health Sciences > University of Virginia School of Medicine > > http://people.virginia.edu/~ll9f/> > ______________________________________________ > [hidden email] 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. > ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|
Report Content as Inappropriate

## Re: trajectory plot (growth curve)

 In reply to this post by Lei Liu-2 On Mon, 2010-08-23 at 15:58 -0400, Lei Liu wrote: > That is, I will plot a growth curve for each subject ID, with y in > the y axis, and time in the x axis. I would like to have all growth > curves in the same plot. Is there a simple way in R to do it? Thanks a > lot! This article, entitled, "Fitting Value-added Models in R", by Harold Doran, is relevant and very useful and interesting. www-stat.stanford.edu/~rag/ed351longit/doran.pdf -- Stuart Luppescu -=- slu .at. ccsr.uchicago.edu         University of Chicago -=- CCSR 才文と智奈美の父 -=-    Kernel 2.6.33-gentoo-r2                  I have mentioned  several times on this list that I'm in the process  of developing a new and wonderful implementation  of lme and I would prefer to continue working on  that rather than modifying old-style code.    --  Douglas Bates       R-help (March 2004)  >         ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.
Open this post in threaded view
|
Report Content as Inappropriate

## Re: trajectory plot (growth curve)

Open this post in threaded view
|
Report Content as Inappropriate

## Re: trajectory plot (growth curve)

Open this post in threaded view
|
Report Content as Inappropriate

## Re: trajectory plot (growth curve)

 On Mon, Aug 23, 2010 at 6:19 PM, Dennis Murphy <[hidden email]> wrote: > > This is an excellent idea - the only snag might occur if someone wants > the mean line to be thicker :) fortunately, with your lattice solution this is easily accomplished by passing a vector to lwd: i <- c(1, 1, 1, 3) mykey <- list(space = 'right',               title = 'ID',               cex.title = 1.2,               text = list(levels(dat\$ID), cex = 0.8),               lines = list(lty = i, lwd = i, col = 1:4)) xyplot(y ~ time, data = dat, lty = i, lwd = i, col.lines = 1:4, col = 1:4,      groups = ID, type = c('g', 'p', 'l'), key = mykey) but I didn't have luck trying the same with qplot: > qplot(time, y, data = dat, group = ID, color = ID, +     geom = c('point', 'line'), lty = i, lwd = i) Error in data.frame(colour = c(1L, 1L, 1L, 2L, 2L, 2L, 2L, 3L, 3L, 3L,  :   arguments imply differing number of rows: 18, 4 perhaps using the construct ggplot(...) + geom_line(...) would be more fruitful? King > Having said that, it's usually easier to > 'fix' the > problem externally in the data rather than to fiddle with graphics commands. > >> >> #the original data (no replicates within time points) >> dat <- structure(list(ID = structure(c(1L, 1L, 1L, 2L, 2L, 2L, 2L), >>  .Label = c("1", "2"), class = "factor"), >>  time = c(1, 2, 3, 1.5, 4, 5.5, 6), >>  y = c(1.4, 2, 2.5, 2.3, 4.5, 1.6, 2)), >>  .Names = c("ID", "time", "y"), >>  row.names = c(NA, -7L), class = "data.frame") >> >> #adding another subject to introduce replicates >> id3 <- data.frame(ID=as.factor(rep(3, 4)),time = c(1, 1.5, 2, 5.5), >>                 y = c(1, 2.2, 3, 2)) >> dat <- rbind(dat, id3) >> mean.y <- aggregate(formula = y ~ time, data = dat, FUN = mean) >> mean.y <- cbind(ID = as.factor('mean'), mean.y) >> dat <- rbind(dat, mean.y) >> dat >> library(ggplot2) >> qplot(time, y, data=dat, group = ID, color = ID, geom = c('point', >> 'line')) > >  A lattice version with a legend is: > > mykey <- list(space = 'right', >               title = 'ID', >               cex.title = 1.2, >               text = list(levels(dat\$ID), cex = 0.8), >               lines = list(lty = 1, col = 1:4)) > > xyplot(y ~ time, data = dat, lty = 1, col.lines = 1:4, col = 1:4, >      groups = ID, type = c('g', 'p', 'l'), key = mykey) > > Defining the key externally modularizes the problem, lets one define > the features one wants to contain, and simplifies the high-level > xyplot() call. > > There is a type = 'a' (shorthand for panel.average()) that can be > used to good effect in xyplot(), but it creates 'holes' where missing > data reside, so taking care of the problem externally at the data > level is much cleaner. > > HTH, > Dennis > >> >> best, >> >> Kingsford Jones >> >> ______________________________________________ >> [hidden email] 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. > > ______________________________________________ [hidden email] mailing list https://stat.ethz.ch/mailman/listinfo/r-helpPLEASE do read the posting guide http://www.R-project.org/posting-guide.htmland provide commented, minimal, self-contained, reproducible code.