Most of R is getting your data into the proper format and I am struggling with creating a two panel lattice plot with two groups of three each. Ultimately I would like to show a series of simplified box-pots which just show a line from the Lower95 to the Upper95 and a point for the Center, for each Drug and Test and have two panels (Sen & Spec) that have six lines (and points in them).
My simplified data look like this
df2 <- data.frame (
Center = c(0.94, 0.97, 0.95, 0.97, 1, 0.94, 1, 0.99, 0.96, 0.98, 0.98, 0.99),
Lower95 =c(0.91, 0.95, 0.93, 0.95, 0.98, 0.91, 0.98, 0.96, 0.92, 0.96, 0.95, 0.96),
Upper95 =c(0.96, 0.98, 0.97, 0.98, 1, 0.96, 1, 1, 0.98, 0.99, 0.99, 1 ),
Y = c(1,2,3,4,5,6,1,2,3,4,5,6),
Drug=c("INH","INH","INH","RIF","RIF","RIF","INH","INH","INH","RIF","RIF","RIF"),
Test=c("LPA","MODS","PSQ","LPA","MODS","PSQ","LPA","MODS","PSQ","LPA","MODS","PSQ"),
Measure=c("Sen","Sen","Sen","Sen","Sen","Sen","Spec","Spec","Spec","Spec","Spec","Spec")
)
attach(df2)
xyplot(Y~Lower95+Upper95|Measure, df=df2, type="o")
So this outputs this image and there are a couple of problems - :
Here is something like what I desire (my hack in GIMP) -
I've tried unsuccessfully to reshape the data, and a few other things within xyplot (e.g. different factors/groups) but I cannot seem to get it to work the way I'd like it to be.
Thanks for your help !
What you are drawing is most similar to a lattice
dotplot. Standard lattice
isn't great for error bars but the Hmisc
library adds that functionality into lattice
functions nicely. So you could do
library(lattice)
library(Hmisc)
Dotplot(Test~Cbind(Center,Lower95,Upper95)|Measure+Drug, df2)
to get
if you want to go a step further you can also include latticeExtra
to move the drug labels to the left
library(latticeExtra)
useOuterStrips(Dotplot(Test~Cbind(Center,Lower95,Upper95)|Measure+Drug, df2))
which results in