目前我有一个数据框,我想将三个变量绘制成一个箱图:
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")
我的情节看起来像这样:
x轴标签显示1.CKD,13.CKD,7.CKD,1.HD,13.HD等,但是可以调整xlab部分,使箱线图显示“CKD”,“HD” ,和“移植”作为标签? (以便每个单独的地块按三个分组)。
例如,第一个红色,绿色和蓝色图表将标记为“CKD”(作为组),第二个红色,绿色和蓝色图表将标记为“HD”等。
有没有理由不使用facet_wrap
或facet_grid
?除非我误解了你所寻找的东西,否则这是一个完美的用法分区,然后你不需要interaction
。
你应该可以改为:
ggplot(df, aes(x = livingsetting, y = outcome)) +
geom_boxplot(aes(fill = livingsetting)) +
facet_wrap(~ factor)
它按原样使用数据框,而不是进行交互,并将因子变量的标签添加到构面的顶部,而不是在刻度标签上(尽管如果你想要的话,你可以这样做)。
希望有所帮助!
这是一个说明我上面评论的例子。您不需要互动,因为每个美学都会创建另一个盒子图:
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()