假设我想通过十分位数来阴影标准正态分布的密度曲线下面的区域。我想让最左边10%的区域与下一个10%的区域有不同的阴影。
这是对问题“在两个点之间阴影核密度图”和“ggplot2按组阴影密度曲线下面的区域”的一种变体,但我想要对每个分位数进行阴影处理(在我的例子中,每个组都是十分位数,但该过程应该容易推广到其他分位数)。
我不介意解决方案使用ggplot2
或base
绘图,并且无论是直接从公式进行操作(这将非常简洁),还是基于先创建数据框架进行操作。如果采用后者,您可能需要:
delta <- 0.0001
z.df <- data.frame(x = seq(from=-3, to=3, by=delta))
z.df$pdf <- dnorm(z.df$x)
z.df$decile <- floor(10*pnorm(z.df$x) + 1)
请注意,朴素的解决方案 ggplot(z.df, aes(x = x, fill = quantile)) + geom_ribbon(aes(ymin = 0, ymax = pdf))
会失败,因为 Aesthetics can not vary with a ribbon
。