如何使用ggplot2在单个单元格中绘制具有多个类别的热图?

时间:2014-04-01 02:13:43

标签: r ggplot2 heatmap

如何使用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/

http://postimg.org/image/4dudrv0nz/

正如Alex Reynolds建议的那样,从biostar复制。

1 个答案:

答案 0 :(得分:2)

对于那些感兴趣的人,这个结果来自Exome sequencing identifies mutation in CNOT3 and ribosomal genes RPL5 and RPL10 in T-cell acute lymphoblastic leukemia的图2。

我想用ggplotgeom_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() )来表示有关其他类别(变量)的信息。

在任何情况下,如果有人对如何自动创建这样的人物有其他建议,我很高兴听到这个。