r - 如何从ggplot2上的stat_function自动定义水平线的高度?
问题描述
我试图在这个密度图上方添加一条水平线geom_segment
,但是这个函数请求的参数y
和yend
. 因为 - 根据 SD - 曲线的高度可能会有所不同,我想知道如何获得stat_function
最大高度并将其用作添加线的参考。
基本代码:
all_mean <- mean(mtcars$wt,na.rm = T)%>% round(2)
all_sd <- sd(mtcars$wt,na.rm = T)%>% round(2)
my_score <- mtcars[1,"wt"]
dd <- function(x) { dnorm(x, mean=all_mean, sd=all_sd) }
z <- (my_score - all_mean)/all_sd
pc <- round(100*(pnorm(z)), digits=0)
t1 <- paste0(as.character(pc),"th percentile")
p33 <- all_mean + (qnorm(0.3333) * all_sd)
p67 <- all_mean + (qnorm(0.6667) * all_sd)
funcShaded <- function(x, lower_bound) {
y = dnorm(x, mean = all_mean, sd = all_sd)
y[x < lower_bound] <- NA
return(y)
}
greenShaded <- function(x, lower_bound) {
y = dnorm(x, mean = all_mean, sd = all_sd)
y[x > (all_mean*2)] <- NA
return(y)
}
ggplot(data.frame(x=c(min(mtcars$wt-2), max(mtcars$wt+2))), aes(x=x)) +
stat_function(fun=dd, colour="black") +
stat_function(fun = greenShaded, args = list(lower_bound = pc),
geom = "area", fill = "green", alpha = 1)+
stat_function(fun = funcShaded, args = list(lower_bound = my_score),
geom = "area", fill = "white", alpha = .9)+
geom_vline(aes(xintercept=my_score), colour="black")
解决方案
推荐阅读
- forms - 我希望我的 entityType 的每个选择都显示该选择的许多属性 Symfony 4
- postgresql - 无法在 suse 12 sp2 上打开 postgis.control
- python - 尝试在 mac OS 10.6.8 上安装 pip
- c# - 如何从加载的程序集中获取 MatedataReference
- c# - 交换将反映在屏幕上的 KeyCode
- php - PHP根据表单选择将天数添加到日期时间
- javascript - 如何在简单的角度发布请求中添加访问控制允许来源标头?
- r - 使用 R 进行 Rasch 建模:是否有可能从给定的项目难度中仅估计人员参数
- gradle - buildSrc 测试找不到 org.gradle.api 包
- ios - FMDatabaseQueue 冻结 mainThread