1

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

我已经尝试了很长一段时间,我确信有一个非常简单的解决方法,但我的问题是:

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

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

R/ggplot:为多个热图重用颜色键

但我无法弄清楚这个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()函数的任何帮助将不胜感激!

4

2 回答 2

1

重要的是要注意这heatmap.2不是一个ggplot2函数。该ggplot2软件包不一定与所有绘图类型兼容。如果您查看?heatmap.2帮助页面,它会在左上角显示该功能的来源。heatmap.2 {gplots}表示该功能来自gplots包。这些是不同的包装,因此它们有不同的工作规则。

要在不同的热图中获得相同的颜色,您需要显式获取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,
    ...
 )

这应该使他们都匹配。

于 2014-05-23T17:37:12.010 回答
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))

结果如下所示: 热图

我希望这有帮助。

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

于 2016-05-24T05:11:41.920 回答