R 在点绘图中绘制错误条线的垂直端点

R 在点绘图中绘制错误条线的垂直端点,r,plot,lattice,R,Plot,Lattice,我正在使用lattice或dotplot()使用Hmisc绘制dotplot()。使用默认参数时,可以在没有小垂直端点的情况下绘制错误条 --o-- 但是我想 --o-- 我知道我可以 --o-- 当我使用fromplotrix或fromlatticeExtra时,这些解决方案并没有提供像Dotplot()这样好的条件选项。我试图使用绘图线的参数设置,它可以很好地更改错误条线的颜色、宽度等,但到目前为止,我没有成功地添加垂直端点: require(Hmisc) mean = c(1:5) lo

我正在使用
lattice
dotplot()
使用
Hmisc
绘制
dotplot()。使用默认参数时,可以在没有小垂直端点的情况下绘制错误条

--o--

但是我想

--o--

我知道我可以

--o--

当我使用from
plotrix
或from
latticeExtra
时,这些解决方案并没有提供像
Dotplot()
这样好的条件选项。我试图使用
绘图线
参数设置
,它可以很好地更改错误条线的颜色、宽度等,但到目前为止,我没有成功地添加垂直端点:

require(Hmisc)
mean = c(1:5)
lo = mean-0.2
up = mean+0.2
d = data.frame (name = c("a","b","c","d","e"), mean, lo, up)
Dotplot(name ~ Cbind(mean,lo,up),data=d,ylab="",xlab="",col=1,cex=1,
        par.settings = list(plot.line=list(col=1),
                       layout.heights=list(bottom.padding=20,top.padding=20)))


请不要给我使用ggplot2的解决方案…

我过去也有同样的需求,使用
barchart()
而不是
Dotplot()

然后,我的解决方案是创建一个定制的面板函数:(1)首先执行原始面板函数;和(2)然后使用
panel.arrows()
添加错误条(使用双头箭头,其中头部边缘与轴形成90度角)

下面是使用
Dotplot()
时可能出现的情况:

#创建自定义面板功能

mypanel.Dotplot起点可以是使用
bwclot
并修改面板,即
panel.bwclot
。以下线程可能会有所帮助。不错!我认为那些面板函数可以发挥神奇的作用,但lattice manual并不简单,有很多方法可以改变参数。干杯,伙计!嗯,现在我有问题了,因为当我再应用两个条件时,它就不起作用了。通过添加另外两个条件来查看:
Dotplot(name~Cbind(mean,lo,up)| condX*condY,…)
。有什么想法吗?@GeekOnAcid--我现在没时间。我建议您在自定义面板函数中放置一行,读作
browser()
(第一行就可以了)。然后,当/如果调用面板函数时,它会中断执行,你可以在那里四处走动,看看是否有,例如,
tips@GeekOnAcid——然后,如果你不能理解,可以编辑这个问题,或者作为一个新问题问它。如果其他人不接,我会在有机会的时候再谈这个问题。祝你好运+1我也有同样的基本想法(自定义面板功能通常是答案),但我看不出错误条的信息是如何/在哪里传递的。你的回答很好地涵盖了这一点,谢谢!
# 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.15, unit = "native",
                     angle = 90, code = 3)
}

# Use almost the same call as before, replacing the default panel function 
# with your customized function.
Dotplot(name ~ Cbind(mean,lo,up),data=d,ylab="",xlab="",col=1,cex=1,
        panel = mypanel.Dotplot,
        par.settings = list(plot.line=list(col=1),
                       layout.heights=list(bottom.padding=20,top.padding=20)))