如何将 "total" 组插入到我的分组箱线图中?

How to insert a "total" group to my grouped boxplot?

我目前正在做一个分组箱线图来显示比较两种治疗模型的时间段内血清水平的中值和四分位数间隔。您可以在下方看到当前图表。我也想做但找不到如何将另一个 x“类别”与总样本放在一起(pdse 和 tcc 组在一起,所有观察)。我希望我在这里提供的代码和信息足以让你尝试在这里给我一些启发。

这是我为生成 ggplot2 箱线图而创建的子集的结构。

structure(list(modeloterapia = structure(c(2L, 1L, 1L, 2L, 1L, 
1L, 2L, 2L, 1L, 2L), .Label = c("pdse", "tcc"), class = "factor"), 
    periodo = c("ND_IL_6I", "ND_IL_6I", "ND_IL_6I", "ND_IL_6I", 
    "ND_IL_6I", "ND_IL_6I", "ND_IL_6I", "ND_IL_6I", "ND_IL_6I", 
    "ND_IL_6I"), nivel = c(156.475, 25.393, 5.20696, 29.448, 
    636.561, 16.7, 20.83028, 13.04912, 17.28, 30.686)), row.names = c(NA, 
10L), class = "data.frame")

这是我使用 dplyr 做的子集。还有 ggplot2 命令本身。

plots <- df %>% 
          select(ND_IL_6I, IL_6_6mesesultimovalorITT, IL6_12multimovalorITT, IL_6finalultimovalorITT, modeloterapia)

plots_adj <- plots %>% 
              gather("periodo", "nivel", -modeloterapia)

ggplot(plots_adj, aes(x = modeloterapia, y = nivel, fill = periodo)) +
  geom_boxplot() + 
  coord_cartesian(ylim=c(0, 70)) +
  labs(title = "Níveis séricos de interleucina-6 em cada modelo de psicoterapia por período",
              subtitle = "Gráfico dos níveis séricos pelo modelo de terapia",
              x = "Modelo de terapia", y = "Níveis de interleucina-6 (pg/ml)") +
  scale_fill_discrete(name = "Período", labels = c("6 meses", "Pós-intervenção", "12 meses", "Linha de base")) +
  scale_x_discrete(labels = c('Psicoterapia Dinâmica Suportivo Expressiva','Terapia Cognitiva Comportamental'))

希望你今天过得愉快!

这可以让您了解如何进行。您可以计算一个新的聚合级别(我使用的是平均值),然后绑定到您的原始数据。这是代码,我将您的 dput() 数据用作 plots_adj:

library(ggplot2)
library(dplyr)
#Code
plots_adj %>% bind_rows(
  plots_adj %>% group_by(modeloterapia,periodo) %>%
    summarise(nivel=mean(nivel,na.rm=T)) %>%
    mutate(modeloterapia='Total')
) %>%
  ggplot(aes(x = modeloterapia, y = nivel, fill = periodo)) +
  geom_boxplot() + 
  coord_cartesian(ylim=c(0, 200)) +
  labs(title = "Níveis séricos de interleucina-6 em cada modelo de psicoterapia por período",
       subtitle = "Gráfico dos níveis séricos pelo modelo de terapia",
       x = "Modelo de terapia", y = "Níveis de interleucina-6 (pg/ml)") +
  scale_fill_discrete(name = "Período", labels = c("6 meses", "Pós-intervenção", "12 meses", "Linha de base")) +
  scale_x_discrete(labels = c('Psicoterapia Dinâmica Suportivo Expressiva','Terapia Cognitiva Comportamental',
                              'Total'))

输出: