使用ggplot2组美学不起作用

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

我正在尝试使用群体美学来在线图中分离我的数据,但我不明白为什么它不起作用。

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 为两条线。 strange plot

如果我使用线型来提供分组,我会得到正确的绘图。

ggplot(df, aes(x = TIME, y = MEASURE, color = ID)) +
  geom_line(aes(linetype = factor(REP)))

what I was expecting (except for the line differences)

如何使用群体美学按照我想要的方式分离数据?

ggplot2 tidyverse
1个回答
0
投票

发生这种情况是因为

group
参数与
aes()
函数的其他参数(例如
color
fill
)不同,因为它“默认设置为图中所有离散变量的相互作用” (运行
?group
阅读完整说明)。因此,通过手动设置群体美学,您将覆盖
color
美学的正常功能。这就是为什么设置两者的交互来固定你的情节。 如果您在
linetype
层中使用
geom_line
作为一个组,它会将该变量与映射在
color
中的其他变量交互,只需查看数据框,您就可以看到两个变量之间的交互将产生四条线,按颜色和线型分隔。另外,请注意,
linetype
color
参数都会以不同的视觉特征(不同的线型、不同的颜色)分隔线,而
group
不会映射到任何美学质量,因此它只是分割线线变成多线,没有进一步的图形差异。

© www.soinside.com 2019 - 2024. All rights reserved.