r - 在 fiddle 图的填充条件下将散点与线配对

标签 r ggplot2 violin-plot

这是一个 data.frame,其中包含 2 x 2 设计中的三个主题:

x<-data.frame("sub" = rep(c("sub1","sub2","sub3"),times=4),
          "cond1" = rep(c("A","B"),times=c(6,6)),
          "cond2" = rep(c("C","C","C","D","D","D"),times=2),
          "score" = c(6,5,4, 5,4,3, 4,3,2, 3,2,1))

这是 split 的 fiddle 图(功能,https://gist.github.com/Karel-Kroeze/746685f5613e01ba820a31e57f87ec87):

dodge <- position_dodge(width=.5)
ggplot(x, aes(x=cond1, y=score, fill=cond2))+
  geom_split_violin(trim = F)+
  geom_point(shape=16,position=dodge)

2 by 2 split violin plot

我想做的是将各个主题散点与一条穿过填充条件的线连接起来(例如,cond1 A 和 cond2 C 中的 sub1 将连接到 cond1 A 和 cond2 D 中的 sub1)。有谁知道这是否可能?

最佳答案

这是一种方法。首先,我展开 表格,以便geom_segment 的开头和结尾可以基于不同的列。然后我将 cond1 值转换为数字(这是 ggplot 在幕后所做的)并将它们输入 x 字段。 0.12 的 x 闪避偏移是手动的,但可能有一种聪明的方法(超出我目前的理解)使用 ggplot 设置自动确定它。

library(tidyverse)
dodge <- position_dodge(width=.5)
ggplot(x, aes(x=cond1, y=score, fill=cond2))+
  geom_split_violin(trim = F)+
  geom_point(shape=16,position=dodge) +
  geom_segment(data = x %>% spread(cond2, score),
               aes(x    = as.numeric(cond1) - 0.12, 
                   xend = as.numeric(cond1) + 0.12,
                   y = C, yend = D), inherit.aes = FALSE, color = "black")

enter image description here

关于r - 在 fiddle 图的填充条件下将散点与线配对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52823651/

相关文章:

r - 为什么 gamm 返回错误 "unused argument (offset= ...)"?

r - x轴值为日期时的困难注释图

r - 使用 facet_wrap 修复了图的 "number"

r - ggplot2:如何将点与 fiddle 图分组?

python - 将 Pandas 数据框处理成 fiddle 图

替换数据框中变量字符串的部分

r - 如何按组选择非 NA 值,除非只有 NA

r - 极坐标条形图ggplot2 R中的误差线和标签位置不正确

r - 按组划分的阴影 fiddle 图

r - twitterr 包 : How to get as many tweets as possible per account within API limits