ggplot geom_hline 中无法识别的数据列
Posted
技术标签:
【中文标题】ggplot geom_hline 中无法识别的数据列【英文标题】:data column not recognized in the ggplot geom_hline 【发布时间】:2021-11-17 04:07:30 【问题描述】:我想知道为什么我的变量 mean_y
无法识别
geom_hline(yintercept = unique(mean_y))
打电话?
library(tidyverse)
set.seed(20)
n_groups <- 2
n_in_group <- 20
sd_e = 2
groups <- gl(n_groups, n_in_group, labels = c("T","C"))
age <-rnorm(length(groups), 25, 3)
betas <- c(5,0,0,2)
dat <- data.frame(groups=groups,age=age)
X <- model.matrix(~ groups * age, data = dat)
lin_pred <- as.vector(X %*% betas)
dat$y <- rnorm(nrow(X), lin_pred, sd_e)
dat %>% group_by(groups) %>% mutate(mean_y = mean(y)) %>%
ungroup() %>%
ggplot()+aes(x = age, y = y) +
geom_point(aes(color=groups)) +
geom_hline(yintercept = unique(mean_y)) # Error in unique(mean_y) :
# object 'mean_y' not found
【问题讨论】:
【参考方案1】:变量需要在aes()
里面,试试:
geom_hline(aes(yintercept = mean_y))
【讨论】:
我删除了unique
在aes()
中,您可以为group
定义一个变量
可以,第一个aes
是全局的,因此任何美学定义都适用于每个几何图形,如果您想要特定几何图形的组,您可以在内部定义它们。所以这取决于你想做什么
试试dat %>% group_by(groups) %>% mutate(mean_y = mean(y)) %>% ungroup() %>% ggplot()+aes(x = age, y = y, group = groups) + geom_point(aes(color=groups))+ geom_hline(aes(yintercept = mean_y))
那是我的意思,一开始使用aes(x = age, y = y, group = groups)
或aes(x = age, y = y)
没有效果。以上是关于ggplot geom_hline 中无法识别的数据列的主要内容,如果未能解决你的问题,请参考以下文章
图例中 geom_hline 的颜色不正确 [ggplot2]
如何在 ggplot2 中使用 geom_ribbon 为 geom_hline 制作错误栏?
ggplot:geom_vline 和 geom_hline 的单独图例