如何使用ggplot2在单个单元格中绘制多个类别的热图?分类变量的热图可以使用此代码完成
#data
datf <- data.frame(indv=factor(paste("ID", 1:20),
levels =rev(paste("ID", 1:20))), matrix(sample(LETTERS[1:7], 400, T), ncol = 20))
library(ggplot2);
library(reshape2)
# converting data to long form for ggplot2 use
datf1 <- melt(datf, id.var = 'indv')
ggplot(datf1, aes(variable, indv)) + geom_tile(aes(fill = value),
colour = "white") + scale_fill_manual(values= rainbow (7))
代码来自这里: http://rgraphgallery.blogspot.com/2013/04/rg54-heatmap-plot-of-categorical.html
但是像这样的单个单元格中的多个类别呢?是否可以使用三角形或其他形状作为单元格?
http://postimg.org/image/4dudrv0nz/
正如Alex Reynolds建议的那样,从biostar复制。
答案 0 :(得分:2)
对于那些感兴趣的人,这个结果来自Exome sequencing identifies mutation in CNOT3 and ribosomal genes RPL5 and RPL10 in T-cell acute lymphoblastic leukemia的图2。
我想用ggplot
和geom_tile
创建一个类似的情节,用于更大的基因集合(数百个)但最终决定使用geom_points
代替每个细胞提供额外的信息(瓦)。此外,它看起来很像我在Excel或其他电子表格软件中生成的图(可能沿着https://www.youtube.com/watch?v=0s5OiRMMzuY行)。单元格(图块)中的颜色与图例中的颜色不匹配(表明它们已单独添加而不是自动添加)并且似乎存在错误的单元格(对角线分隔颜色 - 从左到右依次为上 - 与对角线不同黑色 - 左下角到右上角 - 。
因此,我总结了两分钱:自动执行这个可能非常耗时,而且我认为只有你想反复这样做才有意义,例如,对可能发生变化的数据或者在多个数据集上,和/或如果你有更多的基因集合。
否则,按照YouTube视频中针对相当少数量的单元格的说明可能会更有效。或使用geom_point
(类似于Adding points to a geom_tile layer in ggplot2或
Marking specific tiles in geom_tile() / geom_raster()
)来表示有关其他类别(变量)的信息。
在任何情况下,如果有人对如何自动创建这样的人物有其他建议,我很高兴听到这个。