I have a dataset in which a value (mean) can or cannot fall within an interval given by lower.bound and upper.bound. I would like to plot this using lattice and have achieved something really nice, but there are still three things missing, I don't know how to tackle (I am relatively new to lattice).
df <- read.table("http://pastebin.com/raw.php?i=FQh6F12t")
require(lattice)
lattice.options(default.theme = standard.theme(color = FALSE))
head(df)
## code topic problem mean lower.bound upper.bound consistent
## 7 A04C coke MP 99.5 36.45 95.95 0
## 8 A04C coke MT 47.5 22.78 100.00 1
## 11 A04C girl MP 50.0 4.75 9.75 0
## 12 A04C girl MT 99.5 20.00 100.00 1
## 23 A14G coke MP 88.5 21.25 66.75 0
## 24 A14G coke MT 82.5 48.36 100.00 1
dotplot(lower.bound + mean + upper.bound ~ code | problem * topic,
data = df, pch = c(6, 3, 2), scales = list(x = list(draw = FALSE)),
as.table = TRUE)
This produces:

The down-arrows/triangles indicate the lower bound, the up arrows/triangles indicate the upper bound and the + marks the mean. The following things I would like to add to the plot but have no idea how (besides obviously customizing the panel function):
- Conditional
pchbased on whether or not ameanvalue is inside the interval. The variableconsistentindicates this (0 = outside the interval).pchshould be1for values inside and3for values outside the interval. (pch for the lower- and upper bound should remain unchanged) - Marking the interval. I would like to draw a thicker line between the
lower.boundandupper.boundat each x-axis tick. - Add the proportion of values outside the interval to the panel headers (e.g.,
MP; 58.6%to the panel in the upper left corner).
For 1 and 2 my problem obviously is, that I don't know how to deal with custom panel function when having multiple y variables (i.e., how to write conditional panel functions based on this). But I couldn't find anything on it.
For 3, the proportion of values outside the interval is given by something like:
1 - with(df, tapply(consistent, list(topic, problem), mean))
## MP MT
## coke 0.5862 0.1724
## girl 0.8276 0.1724
If the answer would furthermore include a nice ordering of levels on the x-axis that would definitely be a plus. The order can change in every panel (i.e., even in panels above each other the same x-axis tick can correspond to a different level of code). But this is not important.
