变换矩阵,使其可以用R中的热图绘制

变换矩阵,使其可以用R中的热图绘制,r,ggplot2,tidyverse,R,Ggplot2,Tidyverse,我有一个矩阵,我想在热图中可视化,带有ggplot,比如R中的geom_tile。数据以 I II A 1 2 B 3 4 但是,要使用ggplot,我需要将此矩阵转换为如下格式的数据帧: Var1 Var2 Value A I 1 A II 2 B I 3 B II 4 如何将矩阵转换为这种格式,以便使用ggplot?我不想要像gplot这样的可视化软件包,因为它看起来慢多了。谢谢。你

我有一个矩阵,我想在热图中可视化,带有ggplot,比如R中的geom_tile。数据以

   I   II
A  1   2
B  3   4
但是,要使用ggplot,我需要将此矩阵转换为如下格式的数据帧:

Var1   Var2   Value
A      I      1
A      II     2
B      I      3
B      II     4

如何将矩阵转换为这种格式,以便使用ggplot?我不想要像gplot这样的可视化软件包,因为它看起来慢多了。谢谢。

你能展示一下你如何创建数据的代码吗?我试着自己编写代码,melt很好用

a = matrix(c(1, 3, 2, 4), 2, dimnames = list(c('A', 'B'), c('I', 'II')))
melt(a)
这就是我得到的:

  Var1 Var2 value
1    A    I     1
2    B    I     3
3    A   II     2
4    B   II     4

melt
from
restrape2
的功能完全相同this@Patronus你能再解释一下吗?I和II是列名,A和B是行名。使用melt()时,变量只有一列,值只有一列,行名消失。它的意思是“没有id变量;使用all作为度量变量”,在我将数据帧转换为矩阵后,它就工作了。看起来melt()无法处理数据帧。@S.Wang事实上melt可以处理数据帧和矩阵。如果您希望rownames作为id.var,melt可以从矩阵中捕获rownames,但是对于数据帧,我认为您必须为rownames创建一个变量,然后使用参数id.var引用它。有关融化数据帧的详细信息,请尝试?melt.data。frame@S.Wang你在问题中说“我有一个矩阵”