您好,我想问如何在多个组之间绘制与 ggplot 中的线连接的配对数据?一些要使用的示例数据:
set.seed(123)
sample <- data.frame(name = c(rep("Amy",4),rep("Bob",4),rep("Jack",4)),
status = rep(c("Before","After"),6),
test = rep(c("English","English","Math","Math"),3),
score = sample(60:100,12,replace=T))
sample %>% ggplot(aes(x=test,y=score,fill=status)) +
geom_boxplot() + geom_point(size = 2)
Run Code Online (Sandbox Code Playgroud)
test这个想法是在 x 轴和scorey 轴上设置,如下所示,但不是使用箱线图,而是geom_point()按组对个体进行分层status(因此组中的点after位于红色箱线图所在的空间中,并且组中的点before位于蓝色箱线图所在的空间中),并geom_line()连接来自同一组的配对数据点name。谢谢!
最简单的方法是使“状态”成为 x 美学,并使用构面包裹来分隔测试:
ggplot(sample, aes(x = status, y = score)) +
geom_boxplot(aes(fill = status), alpha = .2) +
geom_line(aes(group = name)) +
geom_point(size = 2) +
facet_wrap(~ test)
Run Code Online (Sandbox Code Playgroud)
如果您不需要箱线图,则可以将“组”美学移至第一行。
ggplot(sample, aes(x = status, y = score, group = name)) +
geom_line() +
geom_point(size = 2, aes(color = status)) +
facet_wrap(~ test, switch = "x") +
scale_x_discrete("") +
theme_minimal() +
theme(legend.position = "top",
panel.grid = element_blank(),
axis.text.x = element_blank(),
axis.line.y = element_line(size = .5))
Run Code Online (Sandbox Code Playgroud)