On Thu, Mar 22, 2012 at 4:47 PM, Paul Miller <pjmiller...@yahoo.com> wrote: > Hi Michael, > > Made some progress but not there yet. > > Got point #1 by creating an ordered factor. There doesn't appear to be a > command called Scale_x_flip(). >
Sorry, my mistake: I meant scale_x_reverse() ... > Still not sure how to decrease vertical space between the line segments for > each drug. Thought this would be necessary in order to get a fair number of > graphs onto a page in Word or in a pdf (say 4-5). I had imagined creating > graphs that would be wider than they are tall in order to accomplish this. You can set the size of the image device directly, e.g., png(...., width = 400, height = 200) and then make your plots one per image, closing the device with dev.off() when you're done. I think getting multiple plots per page (without facetting) won't be super easy and requires a few tricks with grid tools; someone might know better. I know pdf() supports multiple pages if you plot multiple graphs and don't close the device between, but I'm not sure that's doable with the other ones. > > Removed numbering from the x-axis using "opts(axis.text.x = theme_blank()". > This is slightly different from the "opts(axis.ticks.x = theme_blank())" that > you suggested. Having axis.ticks.x made it a lot easier to figure out I > needed axis.text.x though. > > Got the text for pattern at the top (point #4). > > Still struggling with the text for patient and line (point #5). Managed to at > least add some text manually to show what the text would look like for one of > the graphs. I'm not sure what you are looking for here -- is there an image online you can point me too? > > Not sure how to get a separate graph for each patient x line combination. > Discovered facets earlier today. Think this will just give me one giant graph > though that contains graph for each patient x line combination. > This isn't so bad but it's not clear how one could print it and have the > graphs break properly across pages. > As described above, you probably want to make multiple files by looping over your data and selecting subsets. I know Bert pointed you to xyplot in lattice graphics -- if you get that working, I believe it has some natural support for multi-page graphics but I don't know the package so well. > If you can provide any additional help, that's great. If not that's OK too. > As I said earlier, there's a big time crunch around this. If I can't figure > it out today, then we'll just move forward without it. Then I can figure out > how to do it later for my own edification and at my own leisure. Chances are > that will be a lot more fun than trying to learn under intense time pressure. > > Thanks, > > Paul > > > connection <- textConnection(" > 1/1/Drug A/ Begin (A), Begin (B), End (B), End (A)/0.0000/21.000 > 1/1/Drug B/ Begin (A), Begin (B), End (B), End (A)/0.7143/18.000 > 1/2/Drug A/ Begin (A, B, C), End (A, B), End (C)/0.0000/20.000 > 1/2/Drug B/ Begin (A, B, C), End (A, B), End (C)/0.0000/20.000 > 1/2/Drug C/ Begin (A, B, C), End (A, B), End (C)/0.0000/36.000 > 2/1/Drug A/ Begin (A, B), End (A, B), Begin (C), End (C), Begin (D), End > (D)/0.0000/7.429 > 2/1/Drug B/ Begin (A, B), End (A, B), Begin (C), End (C), Begin (D), End (D)/ > 0.0000/7.429 > 2/1/Drug C/ Begin (A, B), End (A, B), Begin (C), End (C), Begin (D), End (D)/ > 14.5714/21.857 > 2/1/Drug D/ Begin (A, B), End (A, B), Begin (C), End (C), Begin (D), End (D)/ > 25.4286/231.286 > 2/2/Drug A/ Begin (A, B), End (A, B)/0.0000/35.286 > 2/2/Drug B/ Begin (A, B), End (A, B)/0.0000/35.286 > ") > > TestData <- data.frame(scan(connection, list(profile_key=0, line=0, drug="", > pattern="", start_drug=0, stop_drug=0), sep="/")) > TestData <- TestData[TestData$profile_key == 2 & TestData$line == 1,] > TestData > > require(reshape) > TestData <- melt(TestData, measure.vars = c("start_drug", "stop_drug")) > TestData > > TestData$drug <- factor(TestData$drug, levels = c("Drug D", "Drug C", "Drug > B", "Drug A")) > > ggplot(TestData, aes(value, drug)) + geom_line(size = 6) + xlab("") + > ylab("") + theme_bw() + > opts(title = "Pattern = Begin (A), Begin (B), End (B), End > (A) \n (profile_key = 2, line = 1)") + > opts(axis.text.x = theme_blank() ) > > > > --- On Thu, 3/22/12, R. Michael Weylandt <michael.weyla...@gmail.com> wrote: > >> From: R. Michael Weylandt <michael.weyla...@gmail.com> >> Subject: Re: [R] Plotting patient drug timelines using ggplot2 (or some >> other means) -- Help!!! >> To: "Paul Miller" <pjmiller...@yahoo.com> >> Cc: r-help@r-project.org >> Received: Thursday, March 22, 2012, 12:55 PM >> Inline: >> >> On Thu, Mar 22, 2012 at 1:41 PM, Paul Miller <pjmiller...@yahoo.com> >> wrote: >> > Hello All, >> > >> > Want very much to learn how to plot patient drug >> timelines. Trouble is I need to figure out how to do this >> today. So not much time for me to struggle with it. Hoping >> someone can just help me out a bit. >> > >> > Below are some sample data and code that produces what >> I think is the beginning of a very nice graph. >> > >> > Need to alter the code to: >> > >> > 1. Get the lines for the drugs to appear on the y-axis >> in the order that they appear in the data. >> >> Scale_x_flip() >> >> > >> > 2. Decrease the vertical space between the line >> segments for each drug so they are fairly close to one >> another. >> >> Why? This will happen automatically if needed.... >> >> > >> > 3. Remove the numbering from the x-axis. >> >> opts(axis.ticks.x = theme_blank()) >> >> > >> > 4. Put the text for pattern above the graph (e.g., >> "Begin (A), Begin (B), End (B), End (A)"), either centered >> or left aligned. >> >> >> opts(title = "Begin (A), Begin (B), End (B), End (A)") >> >> > >> > 5. Put the patient and line information below the text >> for pattern (e.g., "profile_key = 1, line = 1") >> >> example(geom_text) >> or >> https://learnr.wordpress.com/2010/01/03/directlabels-adding-direct-labels-to-ggplot2-and-lattice-plots/ >> >> > >> > 6. Output a separate graph for each patient and line of >> treatent. >> > >> > Ultimately, I want to combine all the graphs into a >> single Word document. Or perhaps better yet, to create a pdf >> using LaTeX. >> >> Google Sweave or (possibly easier) knitr >> >> > >> > I'm going to continue to try and fugure this out as >> best I can. Any help with it will be greatly appreciated >> though. >> > >> > Thanks, >> > >> > Paul >> > >> > >> > connection <- textConnection(" >> > 1/1/Drug A/ Begin (A), Begin (B), End (B), End >> (A)/0.0000/21.000 >> > 1/1/Drug B/ Begin (A), Begin (B), End (B), End >> (A)/0.7143/18.000 >> > 1/2/Drug A/ Begin (A, B, C), End (A, B), End >> (C)/0.0000/20.000 >> > 1/2/Drug B/ Begin (A, B, C), End (A, B), End >> (C)/0.0000/20.000 >> > 1/2/Drug C/ Begin (A, B, C), End (A, B), End >> (C)/0.0000/36.000 >> > 2/1/Drug A/ Begin (A, B), End (A, B), Begin (C), End >> (C), Begin (D), End (D)/0.0000/7.429 >> > 2/1/Drug B/ Begin (A, B), End (A, B), Begin (C), End >> (C), Begin (D), End (D)/ 0.0000/7.429 >> > 2/1/Drug C/ Begin (A, B), End (A, B), Begin (C), End >> (C), Begin (D), End (D)/ 14.5714/21.857 >> > 2/1/Drug D/ Begin (A, B), End (A, B), Begin (C), End >> (C), Begin (D), End (D)/ 25.4286/231.286 >> > 2/2/Drug A/ Begin (A, B), End (A, B)/0.0000/35.286 >> > 2/2/Drug B/ Begin (A, B), End (A, B)/0.0000/35.286 >> > ") >> > >> > TestData <- data.frame(scan(connection, >> list(profile_key=0, line=0, drug="", pattern="", >> start_drug=0, stop_drug=0), sep="/")) >> > TestData <- TestData[TestData$profile_key == 2 & >> TestData$line == 1,] >> > TestData >> > >> > require(reshape) >> > TestData <- melt(TestData, measure.vars = >> c("start_drug", "stop_drug")) >> > TestData >> > >> > ggplot(TestData, aes(value, drug)) + geom_line(size = >> 6) + xlab("") + ylab("") + theme_bw() >> >> It would be easier if you could use dput() but this was >> helpfully reproducible. >> >> Hope this gets you started, >> >> Michael >> >> > ggsave(file = "plot21.pdf") >> > >> > ______________________________________________ >> > 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. >> ______________________________________________ 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.