带格子的曲线下的颜色区域
Color area under curve with Lattice
我想要 color/shade 正态曲线下两个区间之间的区域,例如示例中生成的那个。间隔可以是 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)
})
我找到了 的非常简单的解决方案,但我没有找到 Lattice 的等效解决方案。
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
.
之前对它们进行排序
我想要 color/shade 正态曲线下两个区间之间的区域,例如示例中生成的那个。间隔可以是 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)
})
我找到了
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
.