使用ggplot图表填充曲线

时间:2015-10-20 18:53:29

标签: r ggplot2 data-visualization

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

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和fill选项的一个命令,但我也无法得到它 我知道有些人使用多边形来做,但结果并不那么柔软和美观。

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和其他选项相同。

2 个答案:

答案 0 :(得分:13)

试试这个:

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

答案 1 :(得分: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