R语言 如何在ggplot中连接每组平均值?

1l5u6lss  于 2023-02-10  发布在  其他
关注(0)|答案(1)|浏览(165)

我可以画两个连续变量的散点图,如下所示:

mtcars %>% 
  ggplot(aes(x=mpg, y = disp)) + geom_point() +
  geom_smooth(method="auto", se=TRUE, fullrange=FALSE, level=0.95)

我使用cut创建了5组汽车的mpg间隔(任何更好的命令也可以)。我喜欢在图表中看到间隔,因此它们很容易理解。

mtcars %>% 
  mutate(mpg_groups = cut(mpg, 5)) %>% 
  group_by(mpg_groups) %>% 
  mutate(mean_disp = mean(disp)) %>% 
  ggplot(aes(x=mpg_groups, y = mean_disp)) + geom_point()

mpg_groups是因子变量,不能再通过geom_smooth()连接。

# not working
mtcars %>% 
  mutate(mpg_groups = cut(mpg, 5)) %>% 
  group_by(mpg_groups) %>% 
  mutate(mean_disp = mean(disp)) %>% 
  ggplot(aes(x=mpg_groups, y = mean_disp)) + geom_point() +
  geom_smooth(method="auto", se=TRUE, fullrange=FALSE, level=0.95)

我可以用easy(tidyverse)代码做些什么来创建每组的平均值并通过线连接它们?

r6vfmomb

r6vfmomb1#

一般来说,当通过ggplot2绘制一条线时,在Map到x上的变量不是数值的所有情况下,都必须显式地设置group美学,例如,使用group=1将所有观察结果分配到一个组,为了简单起见,我将其称为1

library(ggplot2)
library(dplyr, warn=FALSE)

mtcars %>%
  mutate(mpg_groups = cut(mpg, 5)) %>%
  group_by(mpg_groups) %>%
  mutate(mean_disp = mean(disp)) %>%
  ggplot(aes(x = mpg_groups, y = mean_disp, group = 1)) +
  geom_point() +
  geom_smooth(method = "auto", se = TRUE, fullrange = FALSE, level = 0.95)

相关问题