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 %&gt;% group_by(groups) %&gt;% mutate(mean_y = mean(y)) %&gt;% ungroup() %&gt;% 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 制作错误栏?

R ggplot2 颜色映射与 geom_hline

ggplot:geom_vline 和 geom_hline 的单独图例

如何将十六进制代码传递给ggplot中的geom_hline?

使用 ggplot 遍历列并相应地修改 geom_hline(yintercept)