首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在单个ggplot2中对齐层(密度图和垂直线)

如何在单个ggplot2中对齐层(密度图和垂直线)
EN

Stack Overflow用户
提问于 2020-02-05 18:26:08
回答 1查看 219关注 0票数 4

我正在尝试调整一个同时使用stat_functiongeom_vline的图层。我的问题是,垂直线与绿色区域并不完全一致:

垂直线密度图(未对齐)

文章中,我看到了一个将两个单独的情节对齐的解决方案,但是,在我的例子中,我想对齐然后在同一个图中对齐。

代码语言:javascript
复制
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")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-05 18:39:56

默认情况下,stat_function沿着您的范围选择n点。这意味着你的曲线只有有限的分辨率。只需增加funcShaded层的funcShaded

代码语言:javascript
复制
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, n = 1e3)+
  geom_vline(aes(xintercept=my_score), colour="black")

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60081940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档