在R中创建热图

时间:2014-04-03 04:19:43

标签: r heatmap

我想用R.

创建一个热图

以下是我的数据集的样子:

sortCC
                     Genus     Location  Number    propn
    86         Flavobacterium       CC    580 0.3081827843
    130          Algoriphagus       CC    569 0.3023379384
    88              Joostella       CC    175 0.0929861849
    215            Paracoccus       CC    122 0.0648246546
    31              Leifsonia       CC     48 0.0255047821

sortN

                  Genus   Location  Number  propn
119           Niastella        N    316 0.08205661
206         Aminobacter        N    252 0.06543755
51         Nocardioides        N    222 0.05764736
121            Niabella        N    205 0.05323293
257 Pseudorhodoferax???        N    193 0.05011685
149          Pedobacter        N    175 0.04544274

这是我到目前为止的代码:

row.names(sortCC) <- sortCC$Genus
sortCC_matrix <- data.matrix(sortCC)
sortCC_heatmap <- heatmap(sortCC_matrix, Rowv=NA, Colv=NA, col = cm.colors(256), scale="column", margins=c(5,10))

我打算生成2个单独的热图,但是当我使用上面的代码时,使用R时看起来不对。

问题:1)是否可以组合这两个数据集,因为它们具有相同的属,但区别在于位置和数量&amp;比例。 2)如果无法将两者合并,那么如何从热图中排除位置列。

任何建议都将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:2)

由于您拥有相同的列,因此可以绑定data.frames并使用一些方面来区分它。这是一个基于ggplot2的解决方案:

dat <- rbind(sortCC,sortN)
library(ggplot2)
ggplot(dat, aes(y = factor(Number),x = factor(Genus))) +
  geom_tile(aes(fill = propn)) +
  theme_bw() + 
  theme(axis.text.x=element_text(angle=90)) +
  facet_grid(Location~.)

enter image description here

要删除额外的列,您可以使用subset

subset(dat,select=-c(Location))

如果你仍想要Genius的merge数据,你可以使用这样做:

sortCC <- subset(sortCC,select=-c(Location))
sortN <- subset(sortN,select=-c(Location))
merge(sortCC,sortN,by='Genus')