我正在尝试使用群体美学来在线图中分离我的数据,但我不明白为什么它不起作用。
library(tidyverse)
df = data.frame(ID = rep(c("A", "B"), each = 6),
TIME = rep(1:3, times = 4),
REP = rep(c(1,2,1,2), each = 3),
MEASURE = c(10,5,2,20,10,4,15,3,1,8,4,1))
ggplot(df, aes(x = TIME, y = MEASURE, color = ID)) +
geom_line(aes(group = factor(REP)))
我以为这会给出一个有 4 条线的图(每个 ID 2 个重复),但我却得到了一个非常奇怪的图,其中 A 为垂直线,B 为两条线。
如果我使用线型来提供分组,我会得到正确的绘图。
ggplot(df, aes(x = TIME, y = MEASURE, color = ID)) +
geom_line(aes(linetype = factor(REP)))
如何使用群体美学按照我想要的方式分离数据?
发生这种情况是因为
group
参数与 aes()
函数的其他参数(例如 color
或 fill
)不同,因为它“默认设置为图中所有离散变量的相互作用” (运行 ?group
阅读完整说明)。因此,通过手动设置群体美学,您将覆盖 color
美学的正常功能。这就是为什么设置两者的交互来固定你的情节。
如果您在 linetype
层中使用 geom_line
作为一个组,它会将该变量与映射在 color
中的其他变量交互,只需查看数据框,您就可以看到两个变量之间的交互将产生四条线,按颜色和线型分隔。另外,请注意, linetype
和 color
参数都会以不同的视觉特征(不同的线型、不同的颜色)分隔线,而 group
不会映射到任何美学质量,因此它只是分割线线变成多线,没有进一步的图形差异。