如何以相同的顺序显示彼此之下的几个热图

时间:2018-03-06 21:31:52

标签: r

我有几个具有相同结构的数据,但我想用相同的标题在彼此之下显示它们。作为一个例子

mat1 = matrix(rnorm(80, 2), 8, 10)
mat1 = rbind(mat1, matrix(rnorm(40, -2), 4, 10))
rownames(mat1) = paste0("R", 1:12)
colnames(mat1) = paste0("C", 1:10)
mat2 = matrix(rnorm(60, 2), 12, 10)
mat2 = rbind(mat2, matrix(rnorm(60, -2), 12, 10))
rownames(mat2) = paste0("RR", 1:24)

它们是两种尺寸的两种数据。我想并排绘制它们并使用相同的顺序或行名称

以下图为例,但请丢弃树形图或分类线,因为我希望保持订单与行名相同

enter image description here

我已阅读此信息并尝试使用此帖to display two heatmaps in same pdf side by side in R

中的信息

1 个答案:

答案 0 :(得分:0)

set.seed(123)
mat1 = matrix(rnorm(80, 2), 8, 10)
mat1 = rbind(mat1, matrix(rnorm(40, -2), 4, 10))
rownames(mat1) = paste0("R", 1:12)
colnames(mat1) = paste0("C", 1:10)
mat2 = matrix(rnorm(60, 2), 12, 10)
mat2 = rbind(mat2, matrix(rnorm(60, -2), 12, 10))
rownames(mat2) = paste0("RR", 1:24)
par(mfrow = c(1, 2))
image(t(mat1)[,nrow(mat1):1], main = "mat1")
image(t(mat2)[,nrow(mat2):1], main = "mat2")

two color images next to eachother

这产生每个矩阵的彩色图像。我把它们放在彼此旁边,因为如果你使用Rstudio,将它们放在另一个之上,就不可能在RStudioGD中看到它。如果您希望将它们放在彼此之上,请将呼叫更改为par par(mfrow = c(2, 1))

据我所知,热图是数据矩阵的彩色图像,经过层次聚类分析(矩阵和转置)并相应地重新排序,这样您就可以了解任何基础结构体。所以这不是一个热图,但从你的评论中你不需要我理解的热图。

如果你对图像中的用法感到好奇(也就是为什么image(t(mat1)[,nrow(mat1):1]),那是因为图像函数中的一个非常奇怪的设计决定是在绘制数据之前将数据旋转90度。所以重新排序使它与我们通常在页面上显示矩阵的方式相匹配。