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

Jas*_*lns 5 r ggplot2 ggvis

有没有办法让ggplot2的geom_density()函数模仿ggvis的行为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
Run Code Online (Sandbox Code Playgroud)

ggvis输出: P1

ggplot2"默认": P2

ggplot2"需要": P3

注意:可以通过以下(使用trim=TRUE)制作ggvis mimic ggplot2 ,但我想转向另一个方向......

faithful %>% 
  compute_density(~waiting, trim=TRUE) %>% 
  ggvis(~pred_, ~resp_) %>% 
  layer_lines()
Run Code Online (Sandbox Code Playgroud)

ton*_*nov 6

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

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

在此输入图像描述

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