R编程 - 按组问题标记的ggplot2 boxplot

问题描述 投票:0回答:2

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

  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”和“移植”。结果变量是一个连续的结果变量。

这是我的boxplot代码:

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

我的情节看起来像这样:

dd

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

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

r ggplot2 boxplot labels
2个回答
0
投票

有没有理由不使用facet_wrapfacet_grid?除非我误解了你所寻找的东西,否则这是一个完美的用法分区,然后你不需要interaction

你应该可以改为:

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

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

希望有所帮助!


1
投票

这是一个说明我上面评论的例子。您不需要互动,因为每个美学都会创建另一个盒子图:

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()
© www.soinside.com 2019 - 2024. All rights reserved.