在R中创建热图
我想用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
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')