Интеграция Boxplot трех информационных уровней - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть вопрос о том, как изобразить свои данные, используя коробочную диаграмму и интегрируя 3 различных типа информации. В частности, у меня есть фрейм данных, который выглядит так:

  Exp_number  Condition  Cell_Type     Gene1        Gene2       Gene3     

       1           2       Cancer       0.33         0.2         1.2
       1           2       Cancer       0.12         1.12        2.5
       1           4       Fibro        3.4          2.2         0.8
       2           4       Cancer       0.12         0.4         0.11
       2           4       Normal       0.001        0.01        0.001
       3           1       Cancer       0.22         1.2         3.2  
       2           1       Normal       0.001        0.00003     0.00045 

всего 20 000 столбцов и 110 строк (строки - образцы).

Я хотел бы построить блок-график, в котором данные сначала группируются по условию. Затем в каждом условии я хотел бы выделить, например, используя разные цвета, exp_number и, наконец, я не знаю, как, но я бы хотел выделить тип ячейки. Цель состоит в том, чтобы выделить различия между exp_number между условиями с точки зрения экспрессии генов, а также различия типов клеток между Exp_numbers. Есть ли простой способ объединить всю эту информацию в одном сюжете?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

Аналогично @ storaged's answer , но используя два измерения facet_grid для представления 2 ваших переменных:

ggplot(dat2, aes(x=Cell_type, y=Expression)) + 
  geom_boxplot() + 
  facet_grid(Exp_number ~ condition) + 
  theme_bw() 

enter image description here

Данные:

library(reshape2)
dat <- data.frame(Exp_number=factor(sample(1:3,100,replace = T)), 
                  condition=factor(sample(1:4,100,T)), 
                  Cell_type=factor(sample(c("Normal", "Cancer", "Fibro"), 100, replace=T)), 
                  Gene1=abs(rnorm(100, 5, 1)), 
                  Gene2=abs(rnorm(100, 6, 0.5)), 
                  Gene3=abs(rnorm(100, 4, 3)))

dat2 <- melt(dat, id=c("Exp_number", "condition", "Cell_type"), value.name = 'Expression')
dat2$Exp_number <- paste('Exp.', dat2$Exp_number)
dat2$condition <- paste('Condition', dat2$condition)
0 голосов
/ 09 сентября 2018

А как насчет этого подхода

dat <- data.frame(Exp_number=factor(sample(1:3,100,replace = T)), 
                  condition=factor(sample(1:4,100,T)), 
                  Cell_type=factor(sample(c("Normal", "Cancer", "Fibro"), 100, replace=T)), 
                  Gene1=abs(rnorm(100, 5, 1)), 
                  Gene2=abs(rnorm(100, 6, 0.5)), 
                  Gene3=abs(rnorm(100, 4, 3)))

library(reshape2)
dat2 <- melt(dat, id=c("Exp_number", "condition", "Cell_type"))

ggplot(dat2, aes(x=Exp_number, y=value, col=Cell_type)) + 
    geom_boxplot() + 
    facet_grid(~ condition) + 
    theme_bw() + 
    ylab("Expression")

Это дает следующий результат

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...