我试图让我的经验累积密度曲线填充其背景,但似乎无法实现。
我尝试了以下两种方法,第一种方法似乎改变了曲线的alpha而不是填充
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" )
我也想知道它是否会填满整个xlim的100%,因为早期的饱和因子水平。
答案 0 :(得分:4)
这样的东西?
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
- 美学。
但在这种情况下,我们正在使用功能区几何图形,这需要ymax
和ymin
美学,而不是y
。因此,通过设置ymax=..y..
,我们告诉ggplot将ymax
- 美学映射到映射到y
的任何内容。