错误栏刻度| --o-- |在dotplot中不要超过三个条件

时间:2012-02-28 20:14:38

标签: r plot lattice

这个问题是来自Draw vertical ending of error bar line in dotplot的意外后续行动。虽然引用的问题已经成功解决 - 但有一个警告。当我向dotplot引入三个以上的条件时,它不想绘制垂直刻度| --o-- |在错误栏的结尾处。

正如@Josh在评论中所建议的那样,我将browser()注入到第一行函数中,该函数绘制了更新的panel.Dotplot以查看出现了什么问题,但它没有提供任何有助于我的内容。解决这个问题。以下是具有更新Dotplot()函数的四条件panel.Dotplot的示例代码,该函数不起作用。如果您减少条件数量(检查上面引用的问题的答案),它将起作用:

require(Hmisc)
#Fake conditions
mean = c(1:18)
lo = mean-0.2
up = mean+0.2
name = c("a","b","c")
cond1 = c("A","B","C")
cond2 = c(rep("E1",9),rep("E2",9))
d = data.frame (name = rep(name,6), mean, lo, up, 
                cond1=rep(cond1,each=3,times=2), cond2)
# Create the customized panel function
mypanel.Dotplot <- function(x, y, ...) {
       panel.Dotplot(x,y,...)
       tips <- attr(x, "other")
       panel.arrows(x0 = tips[,1], y0 = y,x1 = tips[,2], 
                y1 = y,length = 0.1, unit = "native",
                angle = 90, code = 3)
}
#Draw Dotplot - `panel.Dotplot` doesn't change anything
setTrellis()
Dotplot(name ~ Cbind(mean,lo,up) | cond1 * cond2, data=d, ylab="", xlab="",col=1,
        panel = mypanel.Dotplot)

enter image description here

1 个答案:

答案 0 :(得分:5)

误差条实际上是渲染的,但由于它们的长度非常短(±0.2单位)而不可见。将误差增加到±1会产生以下结果(我还将length中指定的panel.arrows - 即误差条上限 - 增加到0.5):

lattice error bars

如果您的真实数据相对于x值范围如此精确,那么您可能需要考虑较小的点(因此它们不易于模糊误差条)或夸大x轴的布局。例如,以下使用的原始误差为±0.2单位,原始箭头length为0.1:

Dotplot(name ~ Cbind(mean,lo,up) | cond1 * cond2, data=d, ylab="", xlab="",
  col=1, panel = mypanel.Dotplot, pch=20, cex=0.4, layout=c(1, 6), strip=FALSE,
  strip.left=strip.custom(par.strip.text=list(cex=0.75), bg=0, fg=0))

lattice precise error bars