R 使用ggplot中的线连接分组点
我有一个具有两个分类条件的数据集(条件a具有A1和A2级别,条件B具有B1和B2级别)。每个被测受试者提供四个数据点,两种情况的组合各一个 我已经绘制了各个数据点(添加了一些抖动),并希望将每个主题的两个点连接到A的每个级别(因此,将每个红点连接到示例图中属于同一主题的相邻绿松石点)。我尝试使用geom_line(),但未能指定线连接A级别相同的点。可能有一些解决方案使用facet_grid()而不是分组,但由于这只是更复杂绘图的一部分,我更希望有一个保持分组的解决方案R 使用ggplot中的线连接分组点,r,ggplot2,R,Ggplot2,我有一个具有两个分类条件的数据集(条件a具有A1和A2级别,条件B具有B1和B2级别)。每个被测受试者提供四个数据点,两种情况的组合各一个 我已经绘制了各个数据点(添加了一些抖动),并希望将每个主题的两个点连接到A的每个级别(因此,将每个红点连接到示例图中属于同一主题的相邻绿松石点)。我尝试使用geom_line(),但未能指定线连接A级别相同的点。可能有一些解决方案使用facet_grid()而不是分组,但由于这只是更复杂绘图的一部分,我更希望有一个保持分组的解决方案 d <- data
d <- data.frame(id=as.factor(rep(1:100, each=4)),
A=rep(c("A1", "A1", "A2", "A2"), 100),
B=rep(c("B1", "B2", "B1", "B2"), 100),
y=runif(400))
ggplot(d, aes(x=A, y=y, col=B)) + geom_point(position=position_jitterdodge(.5))
d(受@aosmith对类似问题的启发)
我建议在绘制ggplot之前先进行抖动——这样点和线都可以使用相同的点
library(dplyr)
d_jit <- d %>%
# position on x axis is based on combination of B and jittered A. Mix to taste.
mutate(A_jit = as.numeric(B)*0.5 - 0.75 + jitter(as.numeric(A), 0.5),
grouping = interaction(id, A))
# Trick borrowed from https://stackoverflow.com/questions/44656299/ggplot-connecting-each-point-within-one-group-on-discrete-x-axis
# ... x-axis defined using A and geom_blank, but added layers use A_jit
ggplot(d_jit, aes(x=A, y=y, group = grouping)) +
geom_blank() +
geom_line(aes(A_jit), alpha = 0.2) +
geom_point(aes(A_jit, col=B))
库(dplyr)
准时交货率%
#x轴上的位置基于B和抖动A的组合。根据口味混合。
变异(A_jit=as.numeric(B)*0.5-0.75+抖动(as.numeric(A),0.5),
分组=交互(id,A))
#借镜https://stackoverflow.com/questions/44656299/ggplot-connecting-each-point-within-one-group-on-discrete-x-axis
# ... x轴使用和geom_空白定义,但添加的层使用_jit
ggplot(d_jit,aes(x=A,y=y,group=grouping))+
geom_blank()+
几何线(aes(A_jit),α=0.2)+
几何点(aes(A_jit,col=B))