在R中创建热图

在R中创建热图,r,heatmap,R,Heatmap,我想用R创建一个热图 以下是我的数据集的外观: sortCC Genus Location Number propn 86 Flavobacterium CC 580 0.3081827843 130 Algoriphagus CC 569 0.3023379384 88 Joostella CC 17

我想用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))

row.names(sortCC)因为您有相同的列,所以可以绑定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~.)
如果您仍然希望Genius合并数据,您可以使用这样做,例如:

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

sortCC你说,
因为它们有相同的属,
但是在你给出的例子中,它们没有任何共同的属?请查看
?merge
,并提供更好的代表性数据。很抱歉,它们是按比例排序的,因此顺序不同,但它们具有相同的属。这非常有用。有没有一种方法可以使用ggplot包使因子(属)展开并可读,因为我正在处理300个属,当我绘制属时,所有属都聚集在一起。非常感谢。将aes(y=因子(数),x=因子(属)切换到aes(x=因子(数),y=因子(属))
并添加
+facet\u网格(Location~,scales=“free”,space=“free”)
以删除每个网格的空级别。谢谢@agstudy我想从热图中删除因子(属),但是当我做ggplot(dat,aes(x=因子(属))+geom_tile(aes(fill=propn))+theme_bw()+theme(axis.text.x=元素_text(angle=90))+facet_网格(Location~)时,R控制台会说“as.environment(where)中的错误:'where'缺失”我想知道为什么?我怎样才能使控制台不给我这个信息呢。
sortCC <- subset(sortCC,select=-c(Location))
sortN <- subset(sortN,select=-c(Location))
merge(sortCC,sortN,by='Genus')