如何让ggplot绘制的ecdf图填充背景色

4

我正在尝试使我的经验累积密度曲线的背景填充,但似乎无法实现。

我尝试了以下两种方法,第一种似乎只改变了曲线的透明度而没有填充:

ggplot( myDataFrame , aes( x=myVariable , fill=myFactor ) )                       +
geom_step      ( stat="ecdf" , aes( colour = myFactor  ) , alpha=1 )              +
coord_cartesian( xlim = c( 0 , quantile( myDataFrame$myVariable , prob=0.99 ) ) ) +
facet_grid     ( myFactor ~ . , scales="free_y" )

第二个似乎等同于上述内容。
ggplot( myDataFrame , aes( x=myVariable , fill=myFactor ) )                       +
stat_ecdf      ( aes( colour = myFactor ) ,alpha=0.2 )                            +
coord_cartesian( xlim = c( 0 , quantile( myDataFrame$myVariable , prob=0.99 ) ) ) +
facet_grid     ( myFactor ~ . , scales="free_y" )

我也想知道,它是否会填满在早期饱和的因子水平上的100%xlim。 在因素级子集上的经验累积密度
1个回答

10

您希望我翻译这样的内容吗?

library(ggplot2)
set.seed(1)
df <- data.frame(var=c(rnorm(1000),rpois(1000,25),rgamma(1000,25)),
                 fact=rep(c("N","P","G"),each=1000))
ggplot(df,aes(x=var,fill=fact))+
  stat_ecdf(aes(ymin=0,ymax=..y..),geom="ribbon")+
  stat_ecdf(geom="step")+
  facet_grid(fact~.,scales="free_y")

编辑: (回复下面的评论)。

符号..y..提供了访问映射到ggplot的y美学的任何内容的方式。

stat_*(...)函数创建一个隐含的变量,该变量映射到y美学。对于stat_ecdf(...),它是ecdf:小于或等于给定x的观察值在x中所占比例。ggplot将自动将此内部变量映射到y美学。

但在这种情况下,我们使用的是ribbon几何图形,它需要ymaxymin美学,而不是y美学。因此,通过设置ymax=..y..,我们告诉ggplot将ymax-美学映射到映射到y的任何内容。


你能解释一下ymax中的..y..符号吗?我之前在ggplot中没有见过这个符号,而且在stat_ecdf文档中也没有提到。我尝试了一下你的示例代码,发现只有加上这个参数才能正常工作。谢谢。 - SubstantiaN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接