曲面下的颜色区域与格子

时间:2016-03-25 19:48:07

标签: r plot lattice

我想在正常曲线下的两个区间之间对区域进行着色/阴影处理,例如在示例中生成的区域。间隔可以是125:140或超过140的区段。

library(lattice)

e4a <- seq(60, 170, length = 10000)
e4b <- dnorm(e4a, 110, 15)
xyplot(e4b ~ e4a,
   type = "l",
   scales = list(x = list(at = seq(60, 170, 5)), rot = 45),
   panel = function(x, ...){
           panel.xyplot(x, ...)
           panel.abline( v = c(110, 125, 95, 140, 80, 95), lty = 2)
   })

enter image description here

我为R graphic base system找到了一个非常直接的解决方案,但我找不到莱迪思的等效解决方案。

1 个答案:

答案 0 :(得分:4)

panel.polygon存在:

xyplot(e4b ~ e4a,
       type = "l",
       scales = list(x = list(at = seq(60, 170, 5)), rot = 45),
       panel = function(x,y, ...){
           panel.xyplot(x,y, ...)
           panel.abline( v = c(110, 125, 95, 140, 80, 95), lty = 2)

           xx <- c(125, x[x>=125 & x<=140], 140) 
           yy <- c(0,   y[x>=125 & x<=140], 0) 
           panel.polygon(xx,yy, ..., col='red')
       })

让多边形变得正确有点麻烦。

请注意,e4a已按数据排序。如果不是这样,您可能需要在呈现panel.polygon之前对它们进行排序。

enter image description here