2015-10-20 135 views
0

我想用x = -2到x = 2的正常函数创建一个图,填充在-2到0的曲线下。 我用ggplot2试过用ggplot图填充曲线

qplot(c(-2, 2), stat="function", fun=dnorm, geom="line") + 
+ geom_area(aes(xlim=c(-2,0)),stat="function", fun=dnorm) 

,但我得到这个图,而不是完全充满(黑色) enter image description here

我怎样才能得到填充只能从-2到0的阴谋?

欢迎其他选择或包。

我也试过只有一个命令与ggplot和填充选项,但我也不明白。
我知道有些人使用多边形,但结果并不那么柔和,很好。

PD:我再说一遍,我正在寻找的解决方案不包括事先生成x,y坐标,而是直接使用stat =“function”,fun = dnorm或类似函数。因此,我的问题不是重复的。

我也试过

ggplot(NULL,aes(x=c(-2,2))) + geom_area(aes(x=c(-2,0)),stat="function", fun=dnorm, fill="red") + 
geom_area(aes(x=c(0,2)),stat="function", fun=dnorm, fill="blue") 

但同样它填补所有的单一颜色,蓝色的曲线。红色的一半似乎被覆盖。与geom_ribbon和其他选项一样。

回答

3

尝试这种情况:

ggplot(data.frame(x = c(-2, 2)), aes(x)) + 
    stat_function(fun = dnorm) + 
    stat_function(fun = dnorm, 
       xlim = c(-2,0), 
       geom = "area") 

enter image description here

+0

我想这个问题没有问。 – skan

2

您不能用dnorm生成您的分销数据吗?

library(ggplot2) 
x<-seq(-2,2, 0.01) 
y<-dnorm(x,0,1) 
xddf <- data.frame(x=x,y=y) 
qplot(x,y,data=xddf,geom="line")+ 
    geom_ribbon(data=subset(xddf ,x>-2 & x<0),aes(ymax=y),ymin=0, 
       fill="red",colour=NA,alpha=0.5)+ 
    scale_y_continuous(limits=c(0, .4)) 

enter image description here

+0

但是我的意思是使用STAT = “功能” 或类似的,而不会产生先前的x,y对。我只需要用一些参数修改我的geom_area()函数 – skan

+0

@skan我不知道如何用'geom_area'实现这个。 'geom_ribbon()'似乎工作得很好。 –