[R] Plotting patient drug timelines using ggplot2 (or some other means) -- Help!!!

R. Michael Weylandt michael.weylandt at gmail.com
Thu Mar 22 18:55:13 CET 2012


On Thu, Mar 22, 2012 at 1:41 PM, Paul Miller <pjmiller_57 at 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.


> 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")


> 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,


> ggsave(file = "plot21.pdf")
> ______________________________________________
> R-help at 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.

More information about the R-help mailing list