gpt4 book ai didi

r - ggplot2 stat_function - 我们可以在其他层上使用生成的 y 值吗

转载 作者:行者123 更新时间:2023-12-04 07:53:20 27 4
gpt4 key购买 nike

当我尝试使用 ggplot 绘制标准正态分布(使用 stat_function 很容易)并为不同五分位数的曲线下区域着色时,出现了这个问题 -

enter image description here

在我创建了一个数据框后,我能够使用 geom_line 和 geom_ribbon 来做到这一点,其中包含 x 的一系列值和每个 x 的相应 dnorm 值作为 y

    data = data.frame(x=seq(-3,3,length.out=1000))
data$y=dnorm(data$x)
data$Quintile <- with(data,ifelse(x<qnorm(0.2),"Bottom",
ifelse(x<qnorm(0.4),"Second",
ifelse(x<qnorm(0.6),"Middle",
ifelse(x<qnorm(0.8),"Fourth","Top")))))
data$Quintile <- factor(data$Quintile, levels=c("Bottom","Second","Middle","Fourth","Top"))

ggplot(data,aes(x=x,y=y,fill=Quintile))+geom_ribbon(aes(ymax=y),ymin=0,alpha=0.5)+
geom_line(color="black")+theme_bw()+theme(legend.position="bottom")+
scale_fill_manual(values=c("darkgreen","red","purple","blue","gray"))+
geom_vline(xintercept=c(qnorm(c(0.2,0.4,0.6,.8))),color=c("darkgreen","red","purple","blue"),size=1)+
scale_y_continuous("",breaks=NULL)+scale_x_continuous("",breaks=NULL)

我发现使用 stat_function 更有吸引力,我猜它必须创建它的一组 y 值来绘制线条 - 我试图访问其他图层上的那些以添加彩色 strip ,但无法做到 - 我想看看是否有人可以解释如何做到这一点或为什么我们不能

换句话说,不是自己生成数据,而是使用 geom_line 绘制曲线,我想做类似的事情
ggplot(NULL,aes(x=c(-3,3))) + stat_function(fun=dnorm)

并使用 stat_function 生成的数据进行着色 - 我无法访问生成的 y 值(例如,我尝试使用 ..y..)

有没有办法使用这些值?如果是这样怎么办?

最佳答案

ggplot(NULL,aes(x=c(-3,3))) + 
stat_function(fun=dnorm, geom="ribbon",
mapping = aes(ymin=0,ymax=..y..))

关于r - ggplot2 stat_function - 我们可以在其他层上使用生成的 y 值吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26266246/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com