Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用ggplot中的线连接分组点_R_Ggplot2 - Fatal编程技术网

R 使用ggplot中的线连接分组点

R 使用ggplot中的线连接分组点,r,ggplot2,R,Ggplot2,我有一个具有两个分类条件的数据集(条件a具有A1和A2级别,条件B具有B1和B2级别)。每个被测受试者提供四个数据点,两种情况的组合各一个 我已经绘制了各个数据点(添加了一些抖动),并希望将每个主题的两个点连接到A的每个级别(因此,将每个红点连接到示例图中属于同一主题的相邻绿松石点)。我尝试使用geom_line(),但未能指定线连接A级别相同的点。可能有一些解决方案使用facet_grid()而不是分组,但由于这只是更复杂绘图的一部分,我更希望有一个保持分组的解决方案 d <- data

我有一个具有两个分类条件的数据集(条件a具有A1和A2级别,条件B具有B1和B2级别)。每个被测受试者提供四个数据点,两种情况的组合各一个

我已经绘制了各个数据点(添加了一些抖动),并希望将每个主题的两个点连接到A的每个级别(因此,将每个红点连接到示例图中属于同一主题的相邻绿松石点)。我尝试使用geom_line(),但未能指定线连接A级别相同的点。可能有一些解决方案使用facet_grid()而不是分组,但由于这只是更复杂绘图的一部分,我更希望有一个保持分组的解决方案

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))