Р: Как раскрасить образцы на боксплоте по их группе?
В настоящее время у меня есть данные по экспрессии генов в матрице, упорядоченные по образцам в столбцах и генам в строках. У меня есть около 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))