【发布时间】:2021-04-25 05:03:02
【问题描述】:
使用 ggplot2,我尝试使用 3 个因素对数据表示进行重新排序:condition、sex 和 time。
library(ggplot2)
library(dplyr)
DF <- data.frame(value = rnorm(100, 20, sd = 0.1),
cond = c(rep("a",25),rep("b",25),rep("a",25),rep("b",25)),
sex = c(rep("M",50),rep("F",50)),
time = rep(c("1","2"),50)
)
ggplot(data=DF, aes( x = time,
y = value,
fill = cond,
colour = sex,
)
) +
geom_boxplot(size = 1, outlier.shape = NA) +
scale_fill_manual(values=c("#69b3a2", "#404080")) +
scale_color_manual(values=c("grey10", "grey40")) +
ggtitle("aF,aM,bF,bM") +
theme(legend.position = "top")
Badly ordered plot. ggplot2 首先自动排序 condition 并交错 sex 的方式提出了问题。它默认为交错的“aF、aM、bF、bM”顺序,无论我将哪个因素分配给哪个美学。
出于分析目的,我的首选顺序是“aM,bM,aF,bF”。首先订购性,然后交错条件。我试图通过将 2x2 因子分配转换为具有 4 个级别的一组来修复它,这使我可以完全控制顺序:
DF %>% mutate(grp = as.factor(paste0(cond,sex))) -> DF
level_order <- c("aM", "bM", "aF", "bF")
ggplot(data=DF, aes( x = time,
y = value,
fill = factor(grp, level=level_order),
colour = sex
)
) +
geom_boxplot(size = 1, outlier.shape = NA) +
scale_fill_manual(values=c("#69b3a2", "#404080","#69b3a2", "#404080")) +
scale_color_manual(values=c("grey10", "grey40", "grey40", "grey10")) +
ggtitle("aM,bM,aF,bF") +
theme(legend.position = "top")
Ordering OK, bad representation. 然而,像这样的人工分组有其缺点,受试者没有被分配到一个组,他们是男性/女性(不能改变)并被分配到某些条件。情节图例也不必要地混乱,它有 6 个键而不是 4 个。它并没有传达出它的 2x2 重复测量设计那么好。
我不确定我正在尝试做的事情是否有意义(我希望这不是脑残),任何帮助将不胜感激。
【问题讨论】:
-
总是值得考虑:方面