【问题标题】:Connecting grouped points with lines in ggplot用ggplot中的线连接分组点
【发布时间】:2019-01-28 17:53:44
【问题描述】:

我有一个包含两个分类条件的数据集(条件 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)) 

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    (受@aosmith 的answer here 类似问题启发)

    我建议在 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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-21
      • 1970-01-01
      • 1970-01-01
      • 2018-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多