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

问题描述 投票:-1回答:1

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

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

r
1个回答
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度。所以重新排序使它与之匹配我们通常会在页面上显示矩阵。

© www.soinside.com 2019 - 2024. All rights reserved.