我有一个数据集,其中值 ( mean
) 可以或不能落在 and 给出的区间lower.bound
内upper.bound
。我想用它来绘制它lattice
并且已经取得了一些非常好的东西,但是仍然缺少三件事,我不知道如何解决(我对 比较陌生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)
这会产生:
向下箭头/三角形表示下限,向上箭头/三角形表示上限,+
标记mean
. 我想添加以下内容但不知道如何添加(除了显然自定义面板功能):
pch
基于mean
值是否在区间内的条件。变量consistent
表明了这一点(0 = 在区间之外)。pch
应该1
用于区间内3
的值和区间外的值。(下限和上限的 pch 应保持不变)- 标记间隔。我想在每个 x 轴刻度之间画一条更粗的
lower.bound
线。upper.bound
- 将区间外的值比例添加到面板标题(例如,
MP; 58.6%
添加到左上角的面板)。
对于 1 和 2,我的问题显然是,当有多个 y 变量时,我不知道如何处理自定义面板函数(即,如何基于此编写条件面板函数)。但我在上面找不到任何东西。
对于 3,区间外的值的比例由以下内容给出:
1 - with(df, tapply(consistent, list(topic, problem), mean))
## MP MT
## coke 0.5862 0.1724
## girl 0.8276 0.1724
如果答案还包括一个很好的 x 轴上的级别排序,那肯定是一个加号。每个面板中的顺序可以改变(即,即使在彼此上方的面板中,相同的 x 轴刻度也可以对应于不同级别的code
)。但这并不重要。