Сопряжение сэмплов со скрипичным сюжетом в R

Я пытаюсь воспроизвести этот график из ggpaired (ggpubr), но с сюжетом скрипки вместо boxplot:

before <-c(200.1, 190.9, 192.7, 213, 241.4, 196.9, 172.2, 185.5, 205.2, 193.7)
after <-c(392.9, 393.2, 345.1, 393, 434, 427.9, 422, 383.9, 392.3, 352.2)

 d <- data.frame(before = before, after = after)
 ggpaired(d, cond1 = "before", cond2 = "after",
     fill = "condition", palette = "jco")

Я пробовал использовать geom_violin из ggplot2, но безуспешно соединял образцы, как это делает ggpaired.

парная коробчатая диаграмма


person Gabriel G.    schedule 26.09.2019    source источник
comment
Если вы хотите geom_violin, почему бы не использовать geom_violin? Мне кажется, что ggpaired делает коробчатые диаграммы.   -  person Axeman    schedule 26.09.2019
comment
Вот что я пытаюсь. Я не видел способа делать парные сэмплы вроде ggpaired! Конечно, я все еще изучаю графики в R   -  person Gabriel G.    schedule 26.09.2019
comment
А, ладно, значит, вам нужен ggplot2 ответ, а не ggpubr?   -  person Axeman    schedule 26.09.2019
comment
Это именно то, что мне нужно (и, может быть, самый простой способ)   -  person Gabriel G.    schedule 26.09.2019


Ответы (1)


Сначала вам нужно изменить форму ваших данных:

library(ggplot2)
before <-c(200.1, 190.9, 192.7, 213, 241.4, 196.9, 172.2, 185.5, 205.2, 193.7)
after <-c(392.9, 393.2, 345.1, 393, 434, 427.9, 422, 383.9, 392.3, 352.2)

d <- data.frame(before = before, after = after)
d$obs <- 1:nrow(d)
d2 <- tidyr::gather(d, time, value, -obs)

ggplot(d2, aes(time, value)) + 
  geom_violin() +
  geom_point() +
  geom_line(aes(group = obs)) +
  scale_x_discrete(limits = c('before', 'after'))

введите здесь описание изображения

person Axeman    schedule 26.09.2019