如何从 ggplot 中的多个变量绘制一个图?

How can I make one plot from multiple variables in ggplot?

我正在尝试为三个组制作 post 前更改图。 在我的数据框中,预数据和 post 数据存储为两个不同的变量,如下所示。

pre_treat <- c(5,8,4,6,5,9,6,7,5)
post_treat <- c(2,2,4,10,9,11,4,5,3)
group <- c("A","A","A","B","B","B","C","C","C")
df <- data.frame(pre_treat = pre_treat,
                 post_treat = post_treat,
                 group = group)

> df
  pre_treat post_treat group
1         5          2     A
2         8          2     A
3         4          4     A
4         6         10     B
5         5          9     B
6         9         11     B
7         6          4     C
8         7          5     C
9         5          3     C

我想绘制每个组的 pre_treatpost_treat 的平均值,如下图所示。我也想用组面绘制它们。

我们可以这样做。首先以长格式导入数据。然后计算每组的平均值。使用 forcats 包中的 fct_relevel 重新调平,然后使用 facet_wrap.

绘图
library(tidyverse)

df %>% 
  pivot_longer(-group) %>% 
  group_by(group, name) %>% 
  summarise(mean = mean(value)) %>% 
  mutate(name = fct_relevel(name, c("pre_treat", "post_treat"))) %>% 
  ggplot(aes(x=name, y=mean, group=1)) +
  geom_line()+
  facet_wrap(.~group)