Р: Как раскрасить образцы на боксплоте по их группе?

В настоящее время у меня есть данные по экспрессии генов в матрице, упорядоченные по образцам в столбцах и генам в строках. У меня есть около 300 образцов против 30000 генов.

Там первые три строки данных таковы:

         Sample1  Sample2  Sample3   Sample4   Sample5
Gene1    6.53845  6.38723  6.41613   6.07901   6.45148
Gene2    6.34303  6.52751  6.48025   6.79185   6.94955
Gene3    6.17286  6.31772  6.44266   6.61777   7.05509
...      ...    

И так до 30000 строк и 300 образцов.

Мне удалось построить блокпост данных с использованием R, но сейчас я хочу раскрасить блокпост на основе пакетов / групп образца.

У меня есть таблица информации о партии как таковой.

Sample   Batch
Sample1  A
Sample2  A
Sample3  B
Sample4  A
Sample5  C
...      ...

И так на 8 партий. Используя R, как мне покрасить коробку на основе того, к какой партии относится образец? Спасибо!

1 ответ

Решение

Один из подходов может быть

library(dplyr)
library(tidyr)
library(tibble)
library(ggplot2)

df %>%
  rownames_to_column("Genes") %>%                          #add rownames as column
  gather(Sample, Sample_value, -Genes) %>%                 #convert data to long format from wide format for plotting
  left_join(batch_lookup, by = "Sample") %>%               #join it with lookup table to add 'Batch' column
  ggplot(aes(x=Sample, y=Sample_value, color=Batch)) +     #plot data
    geom_boxplot()

какие участки

Пример данных:

df <- structure(list(Sample1 = c(6.53845, 6.34303, 6.17286), Sample2 = c(6.38723, 
6.52751, 6.31772), Sample3 = c(6.41613, 6.48025, 6.44266), Sample4 = c(6.07901, 
6.79185, 6.61777), Sample5 = c(6.45148, 6.94955, 7.05509)), .Names = c("Sample1", 
"Sample2", "Sample3", "Sample4", "Sample5"), class = "data.frame", row.names = c("Gene1", 
"Gene2", "Gene3"))

batch_lookup <- structure(list(Sample = c("Sample1", "Sample2", "Sample3", "Sample4", 
"Sample5"), Batch = c("A", "A", "B", "A", "C")), .Names = c("Sample", 
"Batch"), class = "data.frame", row.names = c(NA, -5L))
Другие вопросы по тегам