调整x限制ggplot2 geom_density()中的xlim()以模仿ggvis layer_densities()行为

时间:2015-02-24 14:48:55

标签: r ggplot2 ggvis

有没有办法让ggplot2的geom_density()函数模仿ggvis' s layer_densities()的行为?也就是说,如果p1 p3看起来像xlim()(见下文)而没有调用library(ggvis) library(ggplot2) faithful %>% ggvis(~waiting) %>% layer_densities(fill := "green") -> p1 ggplot(faithful, aes(x = waiting)) + geom_density(fill = "green", alpha = 0.2) -> p2 ggplot(faithful, aes(x = waiting)) + geom_density(fill = "green", alpha = 0.2) + xlim(c(30, 110)) -> p3 p1 p2 p3 ?具体来说,我更喜欢使密度曲线的尾部平滑的视图。

trim=TRUE

ggvis输出: p1

ggplot2"默认": p2

ggplot2"期望": p3

注意:可以通过以下方式制作ggvis mimic ggplot2(使用faithful %>% compute_density(~waiting, trim=TRUE) %>% ggvis(~pred_, ~resp_) %>% layer_lines() ),但我想转向另一个方向......

{{1}}

1 个答案:

答案 0 :(得分:6)

如何调用xlim,但是使用以编程方式定义的限制?

l <- density(faithful$waiting)
ggplot(faithful, aes(x = waiting)) +
  geom_density(fill = "green", alpha = 0.2) +
  xlim(range(l$x))

enter image description here

不利的一面是双倍密度估计,所以请记住这一点。