R热图与barplot相结合

时间:2014-01-15 19:10:22

标签: r bar-chart heatmap

我正在尝试创建一个结合了条形图的热图,这样每行的末尾都是一个长度与该行相关的条形图。我们的想法是将以下两个结合起来:

library(gplots)
data(mtcars)
x  <- as.matrix(mtcars[,2:11])
hm<-heatmap(x)
barplot(mtcars[hm$rowInd,"mpg"],horiz=T,names.arg=row.names(mtcars)[hm$rowInd],las=2,cex.names=0.7,col="purple",2)

我的问题是如何在使行和条对齐的同时将两者结合起来? 感谢。

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

您无法合并图表,因为(根据文档)heatmap() uses layout and draws the image in the lower right corner of a 2x2 layout. Consequentially, it can not be used in a multi column/row layout, i.e., when par(mfrow = *) or (mfcol = *) has been called.

你最好的方法是使用ggplot2和gridExtra来组合图形。为此,需要使用ggplot创建热图和条形图。

您可以在ggplot2教程here上找到热图。

使用以下命令将两个图组合后使用:

#Create the plots
g1 <- heatmap
g2 <- barplot

#Arrange them in a grid
gg1 <- ggplot_gtable(ggplot_build(g1))
gg2 <- ggplot_gtable(ggplot_build(g2))

grid.arrange(gg1, gg2, ncol=2)