R 如何在ggplot2中绘制剪裁密度图而不丢失截面

R 如何在ggplot2中绘制剪裁密度图而不丢失截面,r,ggplot2,R,Ggplot2,我想使用ggplot2绘制一个不同方法产生的密度的格子图,其中使用相同的yaxis比例 我想将y轴的上限设置为低于任何一种方法的最高密度值的值。但是,默认情况下,ggplot会删除打印区域之外的几何图形部分 例如: # Toy example of problem xval <- rnorm(10000) #Base1 plot(density(xval)) #Base2 plot(density(xval), ylim=c(0, 0.3)) # densities > 0.3

我想使用ggplot2绘制一个不同方法产生的密度的格子图,其中使用相同的yaxis比例

我想将y轴的上限设置为低于任何一种方法的最高密度值的值。但是,默认情况下,ggplot会删除打印区域之外的几何图形部分

例如:

# Toy example of problem

xval <- rnorm(10000)

#Base1
plot(density(xval)) 
#Base2
plot(density(xval), ylim=c(0, 0.3)) # densities > 0.3 not removed from plot

xval <- as.data.frame(xval)

ggplot(xval, aes(x=xval)) + geom_density() #gg1 - looks like Base1
ggplot(xval, aex(x=xval)) + geom_density() + ylim(0, 0.3) 
#gg2: does not look like Base2 due to removal of density values > 0.3
#问题的玩具示例
xval 0.3未从绘图中删除
xval 0.3
这将产生以下图像:

如何使ggplot图像没有丢失的部分?

直接使用
xlim()
ylim()
将删除不在指定范围内的所有数据点。这就产生了密度图的不连续性。使用
coord_cartesian()
放大而不丢失数据点

ggplot(xval, aes(x=xval)) + 
  geom_density() +  
  coord_cartesian(ylim = c(0, 0.3))