R语言 如何从geom_hline()中的aes()访问Map变量?

uemypmqf  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(91)

我想在geom_hline()中使用Map到y的变量。基本上,我想实现与中相同的行为:

ggplot(mtcars, aes(x = hp, y = qsec)) +
  geom_point() +
  geom_hline(yintercept = mean(mtcars$qsec))

字符串
x1c 0d1x的数据
但是我不想为yintercept参数“重复”mtcars$qsec
我试着使用像yintercept = mean({{ y }})这样的东西,但这给了我“错误:对象'y'未找到”。老实说,我不完全理解什么时候可以使用这些花括号。
有办法吗?谢谢你的帮助!

bttbmeg0

bttbmeg01#

geom_hline无法访问y美学。您可以执行以下操作:

ggplot(mtcars, aes(x = hp, y = qsec)) +
  geom_point() +
  geom_hline(aes(yintercept = mean(qsec)))

字符串


的数据
从注解中可以看出,问题在于必须重复几个geom_hline的代码。实际上,在一个调用中可以向geom_hline传递多个值,因此最简单的方法可能是总结传递给单个geom_hline调用的数据:

ggplot(mtcars, aes(x = hp, y = qsec)) +
  geom_point() +
  geom_hline(data = . %>% 
               reframe(mean = mean(qsec), 
                       sd = sd(qsec),
                       yintercept = seq(mean - 2*sd, mean + 2*sd, sd),
                       color = factor(c('-2sd', '-1sd', 'mean', '+1sd', '+2sd'),
                                      c('-2sd', '-1sd', 'mean', '+1sd', '+2sd'))
               ), aes(yintercept = yintercept, color = color)) +
  scale_color_manual(NULL, values = c('#FF000040', '#FF000080', 'red', 
                                      '#FF000080', '#FF000040'))


相关问题