【发布时间】:2022-06-21 13:22:32
【问题描述】:
我有一个包含两组的数据集 - 实验组和控制组。每个参与者每组贡献两个响应,代表不同的学习方式。这些在下面带有抖动的箱形图中表示。我想使用 ggplot 将每个参与者的两个响应与线连接在一起(因此对照组中的每条红线都对应于对照组中的每条绿松石线),但是我不知道如何在条件下做到这一点。有人可以帮忙吗?我是 R 新手,真的需要指导。
然后,如果增加 = TRUE,我需要将条件内线条的颜色更改为黑色,如果增加 = FALSE,我需要将线条的颜色更改为红色。
理想情况下,我需要它看起来像 Jon 的示例,但带有基于 True 或 False 的黑线或红线:Connecting grouped points with lines in ggplot
数据和ggplot是这样的:
d <- data.frame (
Subject = c("1", "2", "3", "4"),
Group = c("Exp", "Exp", "Control", "Control"),
Tr = c("14", "11", "4", "23"),
Sr = c("56", "78", "12", "10"),
Increase = c("TRUE", "TRUE", "TRUE", "FALSE")
)
# put the data in long format
d <- d %>%
gather(key = "Strategy", value = "raw", Tr, Sr)
d %>%
ggplot(aes(x = Group, y = raw, color = Strategy)) +
geom_boxplot(width = 0.5, lwd = 0.5) +
geom_jitter(width = 0.15) +
geom_line(aes(group = raw),
color = "grey",
arrow = arrow(type = "closed",
length = unit(0.075, "inches")))
【问题讨论】:
-
请以有效的 R 语法将示例数据作为复制/粘贴代码共享,而不是作为表格的屏幕截图。
dput()是一个很好的命令,dput(data[1:12, ])将提供前 12 行数据的复制/粘贴版本,包括所有类和结构信息。 -
从你的数据图片看,不清楚应该连接哪些点。是否有 ID 列或其他内容来指示哪些点对在一起?
-
谢谢,格雷戈尔。我刚刚添加了一个复制/粘贴代码 - 这样更好吗?
-
需要连接的点是每个Exp和Ctr组中每个主题的Tr和Sr。所以对于第一个,Exp组内需要连接的点是14和23
-
这样就清楚多了。
position_jitterdodge适用于点和箱线图as per this answer,但对于线条,我认为唯一的选择是手动抖动 - 在数据中添加噪声作为列。我现在没有时间写答案,但今晚晚些时候,如果没有其他人回答,我会试着看看。