R 编程 - 按组问题标记的 ggplot2 箱线图

R programming - ggplot2 boxplot labeling by group issue

目前我有一个数据框,我想在其中将三个变量绘制成一个箱线图:

  livingsetting        factor                  outcome
1      1                CKD                         2
2      1                CKD                        13
3      1                CKD                        23
4      13               CKD                        12
5      7                CKD                       -14

livingsetting 变量包含因子“1”、“7”和“13”。 因子变量包含因子 "CKD"、"HD" 和 "Transplant"。 结果变量是一个连续的结果变量。

这是我的箱线图代码:

ggplot(df, aes(x = interaction(livingsetting, factor),  
y= outcome)) + geom_boxplot(aes(fill = livingsetting)) + xlab("Factors")+ ylab("Y")

我的情节是这样的:

x 轴标签显示 1.CKD、13.CKD、7.CKD、1.HD、13.HD 等,但是否可以调整xlab 部分,以便箱线图显示 "CKD"、"HD" 和 "Transplant" 作为标签? (以便每个单独的地块都按三组分组)。

例如,第一个红色、绿色和蓝色图将标记为 "CKD"(作为组),第二个红色、绿色和蓝色图将标记为 "HD"等

这里有一个例子来说明我上面的评论。您不需要交互,因为每种美学都会创建另一个箱线图:

df <- read.table(text = "  livingsetting        factor                  outcome
1      7                BLA                         2
2      1                BLA                        13
3      1                CKD                        23
4      13               CKD                        12
5      7                CKD                       -14", header = T, row.names = 1)

df$livingsetting <- as.factor(df$livingsetting)

library(ggplot2)

ggplot(data = df, aes(x = factor, y = outcome, fill = livingsetting)) + 
    geom_boxplot()

有没有理由不使用 facet_wrapfacet_grid?除非我误解了你在找什么,否则这是一个完美的分面用例,然后你就不需要 interaction.

你应该可以改成这样:

ggplot(df, aes(x = livingsetting, y = outcome)) +
    geom_boxplot(aes(fill = livingsetting)) +
    facet_wrap(~ factor)

这按原样使用数据框,而不是进行交互,并将因子变量的标签添加到方面的顶部,而不是在刻度标签上(尽管如果你想要的话,你可以这样做) .

希望对您有所帮助!