【发布时间】:2019-08-29 19:10:20
【问题描述】:
我有一个庞大而复杂的数据集,但重要的部分归结为类似于以下内容:
my_df <- data.frame(Expt = rep(c("Expt1", "Expt2", "Expt3", "Expt4"), each = 96),
ExpType = rep(c("A", "B"), each = 192),
Treatment = c(rep("T1", 192), rep("T2", 144), rep("T1", 48)),
Subject = c(rep(c("S01", "S02", "S03", "S04", "S05", "S06", "S07", "S08"), 24), rep("S01", 96), rep("S06", 96)),
xvar = as.factor(rep(rep(c(10, 5, 2.5, 1.25, 0.6, 0.3, 0.16, 0.08, 0.04, 0.02, 0, "NA"), each = 8), 4)),
yvar = runif(384))
我目前正在按 ExpType 和 Treatment 对数据进行分组,计算一些汇总统计数据,然后绘制图形,如下所示:
myplots <- my_df %>%
group_by(ExpType, Treatment) %>% # took out Include because I'm using the versions with no questionable data
nest() %>%
mutate(sumstats = map(
.x = data,
~.x %>%
group_by(Subject, xvar) %>%
summarize(
my_mean = mean(yvar, na.rm = TRUE)
))) %>%
mutate(plots1 = map2(
.x = data,
.y = sumstats,
~ggplot(data = .x) +
theme_classic() +
scale_shape_manual(name = "Subject", values = c("S01" = 23, "S02" = 24, "S03" = 21, "S04" = 21, "S05" = 22, "S06" = 22, "S07" = 24, "S08" = 25)) +
scale_linetype_manual(name = "Subject", values = c("S01" = "solid", "S02" = "dotted", "S03" = "dotted", "S04" = "solid", "S05" = "dotted", "S06" = "dashed", "S07" = "solid", "S08" = "dashed")) +
scale_fill_manual(name = "Subject", values = c("S01" = "#AA4499", "S02" = "#882255", "S03" = "#CC6677", "S04" = "#DDCC77", "S05" = "#999933", "S06" = "#117733", "S07" = "#44AA99", "S08" = "#88CCEE")) +
scale_color_manual(name = "Subject", values = c("S01" = "#AA4499", "S02" = "#882255", "S03" = "#CC6677", "S04" = "#DDCC77", "S05" = "#999933", "S06" = "#117733", "S07" = "#44AA99", "S08" = "#88CCEE")) +
geom_line(data = .y, aes(x=xvar, y = my_mean, group=Subject, color=Subject, linetype = Subject)) +
geom_point(aes(x=xvar, y = yvar, group=Subject, fill=Subject, shape = Subject), size = 2.5)
))
walk(.x = myplots$plots1, ~print(.x))
这很好,但我有足够的主题,很难看到发生了什么,我希望能够为每个主题制作单独的图表。我可以按主题分面,但它们的数量足够多,以至于图表非常小,很难看到发生了什么。
我在哪里/如何在这个额外的子集步骤中添加,并且仍然将因子传递给手动比例?
【问题讨论】:
-
澄清一下,您想按 ExpType + Treatment + Subject 分组,但能够访问 ggplot 对象中的 Subject 值吗?
-
是的;我希望仍然能够使用主题来设置美学参数(点/线样式)。