On Fri, Oct 15, 2010 at 7:29 AM, Anh Nguyen <eataban...@gmail.com> wrote: > Thank you for the very helpful tips. Just one last question: > - In the lattice method, how can I plot TIME vs OBSconcentration and TIME vs > PREDconcentration in one graph (per individual)? You said "in lattice you > would replace 'smooth' by 'l' in the type = argument of xyplot()" that just > means now the OBSconc is replaced by a line instead of points and PREDconc > is not plotted, right? > --> I tried to superimpose 2 lattices but that won't work. I can keep the > x-scale the same but not the y-scale. Ex: max pred conc = 60 and max obs > conc = 80 and thus for this case, there would be 2 different y-scales > superimposed on one another. > - the ggplot2 method works, just the weird 5,6,7,8,9,10 mg legends (there > are only 5,7,10 mg doses) but it's nothing that photoshop can't take care > of.
No need to resort to photoshop... see the breaks argument of ?scale_x_continous -Ista > > This is very cool, I think I understand it a lot better now. It was a lot > easier than what I was doing before, that's for sure. Thanks! > > On Fri, Oct 15, 2010 at 2:32 AM, Dennis Murphy <djmu...@gmail.com> wrote: > >> Hi: >> >> To get the plots precisely as you have given them in your png file, you're >> most likely going to have to use base graphics, especially if you want a >> separate legend in each panel. Packages ggplot2 and lattice have more >> structured ways of constructing such graphs, so you give up a bit of freedom >> in the details of plot construction to get nicer default configurations. >> >> Perhaps you've written a panel function in S-PLUS (?) to produce each graph >> in your png file - if so, you could simply add a couple of lines to >> determine the max y-value and from that the limits of the y scale. It >> shouldn't be at all difficult to make such modifications. Since R base >> graphics is very similar to base graphics in S-PLUS, you could possibly get >> away with popping your S-PLUS code directly into R and see how far that >> takes you. >> >> Lattice is based on Trellis graphics, but the syntax in lattice has changed >> a fair bit vis a vis Trellis as the package has developed. ggplot2 is a more >> recent graphics system in R predicated on the grammar of graphics exposited >> by Leland Wilkinson. >> >> For my example, I've modified the Theophylline data set in package nlme, >> described in Pinheiro & Bates (2000), Mixed Effects Models in S and S-PLUS, >> Springer. The original data set has eleven unique doses - I combined them >> into three intervals and converted them to factor with cut(). I also created >> four groups of Subjects and put them into a variable ID. The output data >> frame is called theo. I didn't fit the nlme models to the subjects - >> instead, I was lazy and used loess smoothing instead. The code to generate >> the data frame is given below; this is what we mean by a 'reproducible >> example', something that can be copied and pasted into an R session. >> >> # Use modified version of Theophylline data in package nlme >> >> library(nlme) >> theo <- Theoph >> theo <- subset(theo, Dose > 3.5) >> theo$dose <- cut(theo$Dose, breaks = c(3, 4.5, 5, 6), labels = c('4.25', >> '4.8', '5.5')) >> theo <- as.data.frame(theo) >> theo$ID <- with(theo, ifelse(Subject %in% c(6, 7, 12), 1, >> ifelse(Subject %in% c(2, 8, 10), 2, >> ifelse(Subject %in% c(4, 11, 5), 3, 4) ))) >> # ID is used for faceting, dose for color and shape >> >> # lattice version: >> >> xyplot(conc ~ Time | factor(ID), data = theo, col.line = 1:3, >> pch = 1:3, col = 1:3, groups = dose, type = c('p', 'smooth'), >> scales = list(y = list(relation = 'free')), >> auto.key = list(corner = c(0.93, 0.4), lines = TRUE, points = >> TRUE, >> text = levels(theo$dose)) ) >> >> # ggplot2 version: >> # scales = 'free_y' allows independent y scales per panel >> g <- ggplot(theo, aes(x = Time, y = conc, shape = dose, colour = dose, >> group = Subject)) >> g + geom_point() + geom_smooth(method = 'loess', se = FALSE) + >> facet_wrap( ~ ID, ncol = 2, scales = 'free_y') + >> opts(legend.position = c(0.9, 0.4)) >> >> This is meant to give you some indication how the two graphics systems work >> - it's a foundation, not an end product. There are a couple of ways I could >> have adjusted the y-scales in the lattice graphs (either directly in the >> scales = ... part or to use a prepanel function for loess), but since you're >> not likely to use loess in your plots, it's not an important consideration. >> >> Both ggplot2 and lattice place the legend outside the plot area by default; >> I've illustrated a couple of ways to pull it into the plot region FYI. >> >> One other thing: if your data set contains fitted values from your PK >> models for each subject * dose combination, the loess smoothing is >> unnecessary. In ggplot2, you would use geom_line(aes(y = pred), ...) in >> place of geom_smooth(), and in lattice you would replace 'smooth' by 'l' in >> the type = argument of xyplot(). >> >> HTH, >> Dennis >> >> >> >> On Fri, Oct 15, 2010 at 12:46 AM, Anh Nguyen <eataban...@gmail.com> wrote: >> >>> Hello Dennis, >>> >>> That's a very good suggestion. I've attached a template here as a .png >>> file, I hope you can view it. This is what I've managed to achieve in S-Plus >>> (we use S-Plus at work but I also use R because there's some very good R >>> packages for PK data that I want to take advantage of that is not available >>> in S-Plus). The only problem with this is, unfortunately, I cannot figure >>> out how make the scale non-uniform and I hope to fix that. My data looks >>> like this: >>> >>> ID Dose Time Conc Pred ... >>> 1 5 0 0 0 >>> 1 5 0.5 6 8 >>> 1 5 1 16 20 >>> ... >>> 1 7 0 0 0 >>> 1 7 0.5 10 12 >>> 1 7 1 20 19 >>> ... >>> 1 10 3 60 55 >>> ... >>> 2 5 12 4 2 >>> ... >>> ect >>> >>> >>> I don't care if it's ggplot or something else as long as it looks like how >>> I envisioned. >>> >>> >>> >>> >>> On Fri, Oct 15, 2010 at 12:22 AM, Dennis Murphy <djmu...@gmail.com>wrote: >>> >>>> I don't recall that you submitted a reproducible example to use as a >>>> template for assistance. Ista was kind enough to offer a potential >>>> solution, >>>> but it was an abstraction based on the limited information provided in your >>>> previous mail. If you need help, please provide an example data set that >>>> illustrates the problems you're encountering and what you hope to achieve - >>>> your chances of a successful resolution will be much higher when you do. >>>> BTW, there's a dedicated newsgroup for ggplot2: >>>> look for the mailing list link at http://had.co.nz/ggplot2/ >>>> >>>> HTH, >>>> Dennis >>>> >>>> >>>> On Thu, Oct 14, 2010 at 10:02 PM, Anh Nguyen <eataban...@gmail.com>wrote: >>>> >>>>> I found 2 problems with this method: >>>>> >>>>> - There is only one line for predicted dose at 5 mg. >>>>> - The different doses are 5, 7, and 10 mg but somehow there is a legend >>>>> for >>>>> 5,6,7,8,9,10. >>>>> - Is there a way to make the line smooth? >>>>> - The plots are also getting a little crowded and I was wondering if >>>>> there a >>>>> way to split it into 2 or more pages? >>>>> >>>>> Thanks for your help. >>>>> >>>>> On Thu, Oct 14, 2010 at 8:09 PM, Ista Zahn <iz...@psych.rochester.edu >>>>> >wrote: >>>>> >>>>> > Hi, >>>>> > Assuming the data is in a data.frame named "D", something like >>>>> > >>>>> > library(ggplot2) # May need install.packages("ggplot2") first >>>>> > ggplot(D, aes(x=Time, y=Concentration, color=Dose) + >>>>> > geom_point() + >>>>> > geom_line(aes(y = PredictedConcentration, group=1)) + >>>>> > facet_wrap(~ID, scales="free", ncol=3) >>>>> > >>>>> > should do it. >>>>> > >>>>> > -Ista >>>>> > On Thu, Oct 14, 2010 at 10:25 PM, thaliagoo <eataban...@gmail.com> >>>>> wrote: >>>>> > > >>>>> > > Hello-- I have a data for small population who took 1 drug at 3 >>>>> different >>>>> > > doses. I have the actual drug concentrations as well as predicted >>>>> > > concentrations by my model. This is what I'm looking for: >>>>> > > >>>>> > > - Time vs Concentration by ID (individual plots), with each subject >>>>> > > occupying 1 plot -- there is to be 9 plots per page (3x3) >>>>> > > - Observed drug concentration is made up of points, and predicted >>>>> drug >>>>> > > concentration is a curve without points. Points and curve will be >>>>> the >>>>> > same >>>>> > > color for each dose. Different doses will have different colors. >>>>> > > - A legend to specify which color correlates to which dose. >>>>> > > - Axes should be different for each individual (as some individual >>>>> will >>>>> > have >>>>> > > much higher drug concentration than others) and I want to see in >>>>> detail >>>>> > how >>>>> > > well predicted data fits observed data. >>>>> > > >>>>> > > Any help would be greatly appreciated. >>>>> > > -- >>>>> > > View this message in context: >>>>> > >>>>> http://r.789695.n4.nabble.com/Time-vs-Concentration-Graphs-by-ID-tp2996431p2996431.html >>>>> > > Sent from the R help mailing list archive at Nabble.com. >>>>> > > >>>>> > > ______________________________________________ >>>>> > > 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. >>>>> > > >>>>> > >>>>> > >>>>> > >>>>> > -- >>>>> > Ista Zahn >>>>> > Graduate student >>>>> > University of Rochester >>>>> > Department of Clinical and Social Psychology >>>>> > http://yourpsyche.org >>>>> > >>>>> >>>>> [[alternative HTML version deleted]] >>>>> >>>>> >>>>> ______________________________________________ >>>>> 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. >>>>> >>>> >>>> >>> >> > > [[alternative HTML version deleted]] > > ______________________________________________ > 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. > -- Ista Zahn Graduate student University of Rochester Department of Clinical and Social Psychology http://yourpsyche.org ______________________________________________ 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.