我想用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)如果无法将两者合并,那么如何从热图中排除位置列。
任何建议都将不胜感激!谢谢!
答案 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~.)
要删除额外的列,您可以使用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')