Как построить двоичные данные и наличие цвета по группам в R - PullRequest
0 голосов
/ 13 июля 2020

Я новичок в R и пытаюсь построить простые двоичные данные присутствия / отсутствия. Я искал везде, но не могу понять, можно ли раскрасить сюжет путем группировки / метаданных. Пока у меня есть простой график с ggplot со следующим кодом:

мои данные выглядят так:

текущие данные

library(ggplot2)
data <- read.csv("resistance.csv", row.names=1)
data_matrix <- data.matrix(data)
mybinarymap <- heatmap(data_matrix, Rowv=NA, Colv=NA, col = c("white","black"))

и вот сюжет:

бинарный сюжет

Однако я бы хотел изменить плитки, чтобы они были окрашены в соответствии с «Классом», к которому принадлежит ген, например, дополнительные данные будут выглядеть так:

формат данных с метаданными

Будет плитка белого / без цвета, если значение равно 0, и блок будет окрашен, если ген присутствует, с цветом, определяемым столбцом «Класс». Может ли кто-нибудь помочь или предложить другие пакеты? UpSetR, похоже, не выполняет то, о чем я прошу. Я предполагаю, что мне придется немного изменить форму. Спасибо за любую помощь.

1 Ответ

0 голосов
/ 13 июля 2020

Вы можете сделать все это в ggplot2, с небольшой помощью reshape2 для преобразования ваших данных в длинный формат. Здесь я предположил, что у вас есть фрейм данных с именем data, который выглядит как ваше второе изображение данных. Мне пришлось пропустить ваше изображение через оптическое распознавание символов, чтобы воссоздать ваши данные, так как вы не создали воспроизводимый пример, поэтому он может быть неточным:

library(ggplot2)
library(reshape2)

ggplot(melt(data), aes(gene, variable, fill = Class, alpha = value)) + 
  geom_tile(colour = "gray50") +
  scale_alpha_identity(guide = "none") +
  coord_equal(expand = 0) +
  theme_bw() +
  theme(panel.grid.major = element_blank(),
        axis.text.x = element_text(angle = 45, hjust = 1))


Data

data <- structure(list(gene = c("aadAl", "aadAS", "aph(3\")-lb", "aph(6)-ld", 
"blaCTX-M-27", "blaOXA-1", "erm(B)", "mdf(A)", "mph(A)", "catAl"
), Class = c("Aminoglycoside", "Aminoglycoside", "Aminoglycoside", 
"Aminoglycoside", "Beta-lactam", "Beta-lactam", "Macrolide", "Macrolide", 
"Macrolide", "Tetracycline"), X598080 = c(1L, 0L, 1L, 1L, 1L, 
 0L, 1L, 1L, 1L, 0L), X607387 = c(1L, 0L, 1L, 1L, 1L, 0L, 0L, 
1L, 0L, 0L), X888048 = c(1L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 
1L), X893916 = c(0L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 1L, 0L)), class = "data.frame",
row.names = c(NA, -10L))

data
#>           gene          Class X598080 X607387 X888048 X893916
#> 1        aadAl Aminoglycoside       1       1       1       0
#> 2        aadAS Aminoglycoside       0       0       0       1
#> 3   aph(3")-lb Aminoglycoside       1       1       0       0
#> 4    aph(6)-ld Aminoglycoside       1       1       0       0
#> 5  blaCTX-M-27    Beta-lactam       1       1       0       1
#> 6     blaOXA-1    Beta-lactam       0       0       1       0
#> 7       erm(B)      Macrolide       1       0       1       1
#> 8       mdf(A)      Macrolide       1       1       1       1
#> 9       mph(A)      Macrolide       1       0       1       1
#> 10       catAl   Tetracycline       0       0       1       0

Created on 2020-07-13 by the пакет реплекс (v0. 3,0)

...