Home Articles

用ggplot图填充曲线下

Asked
Viewed 498 times
1

我想创建一个图表,其中正常函数从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填充的图?

欢迎其他选项或套餐 .

我也得到它 .
我知道有些人使用多边形来做,但结果并不那么柔软和美观 .

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 Answers

  • 9

    试试这个:

    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

  • 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

Related