Вы можете сделать все это в 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)