【发布时间】:2015-08-14 15:21:00
【问题描述】:
我目前正在从 ggplot 中的许多回归模型中绘制许多不同的一阶差异分布。为了便于解释差异,我想标记每个分布的 2.5% 和 97.5% 百分位数。由于我将绘制很多图,并且因为数据是按二维(模型和类型)分组的,所以我想在 ggplot 环境中定义和绘制相应的百分位数。使用构面绘制分布可以让我准确地到达我想要的位置,除了百分位数。我当然可以更手动地执行此操作,但理想情况下,我希望找到一个我仍然能够使用facet_grid 的解决方案,因为这让我在尝试将不同的情节组合在一起时省去了很多麻烦。
这是一个使用模拟数据的示例:
df.example <- data.frame(model = rep(c("a", "b"), length.out = 500),
type = rep(c("t1", "t2", "t2", "t1"),
length.outh = 250), value = rnorm(1000))
ggplot(df.example, aes(x = value)) +
facet_grid(type ~ model) +
geom_density(aes(fill = model, colour = model))
我尝试通过两种方式添加分位数。第一个产生错误消息:
ggplot(df.example, aes(x = value)) +
facet_grid(. ~ model) +
geom_density(aes(fill = model, colour = model)) +
geom_vline(aes(x = value), xintercept = quantile(value, probs = c(.025, .975)))
Error in quantile(value, probs = c(0.025, 0.975)) : object 'value' not found
而第二个给我的是完整变量的分位数,而不是子密度的分位数。也就是说,绘制的分位数对于所有四种密度都是相同的。
ggplot(df.example, aes(x = value)) +
facet_grid(type ~ model) +
geom_density(aes(fill = model, colour = model)) +
geom_vline(xintercept = quantile(df.example$value, probs = c(.025, .975)))
因此,我想知道是否有办法为 ggplot2 环境中的每个子组绘制特定分位数?
非常感谢任何意见。
【问题讨论】:
标签: r ggplot2 quantile density-plot