Диаграммы рассеяния скрипки с зависимыми переменными в R - PullRequest
1 голос
/ 10 апреля 2020

Вот мой набор данных 'cellcounts':

Treatment DAPI DAPO DAPU 1 DMSO 20 30 40 2 DMSO 24 26 42 3 DMSO 23 24 39 4 EPZ 0.5uM 10 25 22 5 EPZ 0.5uM 12 24 22 6 EPZ 0.5uM 14 24 30 7 EPZ 0.5uM 20 19 32

Я пытаюсь создать график разброса скрипки с группами «Лечение» на оси x и подсчетом клеток (DAPI , DAPO, DAPU) на оси у, так что в общей сложности у меня должно быть шесть участков для скрипки.

p1<-ggplot(cellcounts,aes(x=Treatment,y=DAPI)) +geom_violin(aes(colour="DAPI"),alpha=0.5)+ geom_jitter(data=cellcounts,shape=16,position=position_jitter(0.2),colour="blue")+ geom_boxplot(width=0.1,fill="grey")

Получает график для скрипки с изображением коробки и точками рассеяния , показанными здесь

Я также могу добавить графики для скрипки для данных DAPO и DAPU * * Показано 1013 * здесь с

p2<-p1+geom_violin(aes(Treatment,DAPO,colour="DAPO"),alpha=0.5)

p3<-p2+geom_violin(aes(Treatment,DAPU,colour="DAPU"),alpha=0.5)

Если я попытаюсь добавить график дрожания сейчас с

p3+geom_jitter(data=cellcounts,shape=16,position=position_jitter(0.2),colour="blue")

, он будет добавлен только для данных DAPI, поскольку именно это использовало требование ggplot (?) как я могу также добавить точки данных для данных DAPO и DAPU?

Я также хочу, чтобы точки DAPI для скрипки и джиттера были голубыми, DAPO зелеными и DAPU красными.

Спасибо за ваше время

1 Ответ

0 голосов
/ 10 апреля 2020

Вы можете попробовать что-то вроде ниже, сначала вы переведите данные в длинный формат, чтобы вам не нужно было указывать каждый столбец с помощью команды:

library(ggplot2)
library(tidyr)

p = ggplot(pivot_longer(cellcounts,-Treatment),aes(Treatment,value))+
geom_violin(aes(col=name),position=position_dodge(width=0.3)) +
geom_point(aes(shape=name),col="blue",position=position_dodge(width=0.3))

print (p)

enter image description here

Как вы можете видеть выше, я нарисовал скрипки «уклоненными», то есть не на одной вертикальной линии, и чтобы ваши точки данных были выровнены, обычно мы бы используйте цвет, чтобы быть таким же. Так как вы хотели синий для всех точек, я просто использую форму как переменную, чтобы позволить им выравниваться.

Если вы хотите, чтобы они были одинаковой формы, просто сделайте:

p+scale_shape_manual(values=c(20,20,20))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...