r plot功能 plot函数 - 在两点之间着色内核密度图。




2 Answers

使用polygon()函数,请参阅其帮助页面,我相信我们也有类似的问题。

您需要找到分位数值的索引以获得实际的(x,y)对。

编辑:在这里你去:

x1 <- min(which(dens$x >= q75))  
x2 <- max(which(dens$x <  q95))
with(dens, polygon(x=c(x[c(x1,x1:x2,x2)]), y= c(0, y[x1:x2], 0), col="gray"))

输出(由JDL添加)

plot文字 xlim

我经常使用核心密度图来说明分布。 这些在R中很容易和快速地创建,就像这样:

set.seed(1)
draws <- rnorm(100)^2
dens <- density(draws)
plot(dens)
#or in one line like this: plot(density(rnorm(100)^2))

这给了我这个不错的小PDF:

我希望将PDF下的区域从第75百分位降至第95百分位。 使用quantile函数计算点很容易:

q75 <- quantile(draws, .75)
q95 <- quantile(draws, .95)

但是,如何遮蔽q75q95之间的区域?




扩展解决方案:

如果您想遮蔽两个尾巴(复制并粘贴Dirk的代码)并使用已知的x值:

set.seed(1)
draws <- rnorm(100)^2
dens <- density(draws)
plot(dens)

q2     <- 2
q65    <- 6.5
qn08   <- -0.8
qn02   <- -0.2

x1 <- min(which(dens$x >= q2))  
x2 <- max(which(dens$x <  q65))
x3 <- min(which(dens$x >= qn08))  
x4 <- max(which(dens$x <  qn02))

with(dens, polygon(x=c(x[c(x1,x1:x2,x2)]), y= c(0, y[x1:x2], 0), col="gray"))
with(dens, polygon(x=c(x[c(x3,x3:x4,x4)]), y= c(0, y[x3:x4], 0), col="gray"))

结果:




Related


Tags

r   plot