缩放多个热图的热图颜色

时间:2014-05-23 15:58:04

标签: r ggplot2 heatmap rescale

所以我有一堆矩阵,我试图绘制为热图。我在ggplot2 packaage中使用heatmap.2()函数。

我一直在尝试使用它,我确信有一个非常简单的解决方法,但我的问题是:

如何保持热图之间的颜色一致?例如,使提供颜色的值绝对而不是相对。

我尝试过做类似这个问题的事情:

R/ggplot: Reuse color key for multiple heat maps

但是我无法找出ggplot函数;我一直收到一条错误消息,说明情节"没有图层。

在阅读上述问题的评论后,我尝试使用scales::rescale()discrete_scale(),但前者并未解决问题,而后者无效。

我充分意识到我可能会做一些非常简单的错误,而且只是有点白痴,但对于我的生活,我无法弄清楚我哪里出错了。

至于数据本身,我试图绘制10个矩阵/热图,每个10x10个单元格(显示随时间的变化),单元格中的值范围从1.0到1.2。

例如,这是我正在使用的代码(一旦我有10x10矩阵)。

Matrix1<-matrix(data=(runif(100,1.0,1.2)),nrow=10,ncol=10)
heatmap.2(Matrix1, Colv=NA, Rowv=NA, dendrogram="none",
    trace="none", key=F, cellnote=round(Matrix1,digits=2),
    notecex=1.6, notecol="black",
    labRow=seq(10,100,10), labCol=seq(10,100,10),
    main="Title1", xlab="Xlab1", ylab="Ylab1"
 )

因此,任何有关如何创建heatmap.2()函数的缩放值或如何使用ggplot()函数的帮助都将非常感谢!

2 个答案:

答案 0 :(得分:1)

请务必注意heatmap.2不是ggplot2函数。 ggplot2包不一定与所有绘图类型兼容。如果您查看?heatmap.2帮助页面,则会在左上角显示该功能的来源。 heatmap.2 {gplots}表示该函数来自gplots包。这些是不同的pacakges,所以他们有不同的规则如何工作。

要在不同的热图中获得相同的颜色,您需要显式获取breaks=参数。默认情况下,它会将观察到的数据范围拆分为相等的块。但由于每个数据集可能具有不同的最小值和最大值,因此这些块可能具有不同的起点和终点。通过指定breaks,您可以使它们保持一致。由于您的数据范围为1到1.2,因此您可以设置

mybreaks <- seq(1.0, 1.2, length.out=7)

然后在你的通话中添加

heatmap.2(Matrix1, Colv=NA, Rowv=NA, dendrogram="none",
    ...
    breaks=mybreaks,
    ...
 )

这应该让他们都匹配。

答案 1 :(得分:0)

也许这会对你有所帮助。使用以下代码,多个热图将存储在列表中,稍后将显示在网格中。这将允许您控制每个热图的颜色,因为每个热图是单独创建的。所以在这种情况下,我选择使用绿色和红色作为每个图表中的数字范围。

data(mtcars)
require(ggplot2)
require(gridExtra)


myplotslist2 <- list()
var = c("mpg", "wt", "drat")
new = cbind(mtcars, "variable")
new = cbind(car = rownames(mtcars), new)
for (i in 1:length(var)){
  t= paste("new[[\"variable\"]] = \"", var[[i]],"\"; a = ggplot(new, aes(variable, car)) + geom_tile(aes(fill = ", var[[i]], "),colour = \"white\") + scale_fill_gradient(low = \"red\", high = \"green\") + theme(axis.title.y=element_blank(), axis.text.y=element_blank(),legend.position=\"none\"); myplotslist2[[i]] = a")
  eval(parse(text=t))
}


grid.arrange(grobs=myplotslist2, ncol=length(var))

结果如下: Heatmap

我希望这会有所帮助。

我在博文中解释得更多。 https://dwh-businessintelligence.blogspot.nl/2016/05/pca-3d-and-k-means.html