【问题标题】:draw two heatmap with the same cell size绘制两个具有相同单元格大小的热图
【发布时间】:2014-09-19 15:24:57
【问题描述】:

我正在使用 heatmap.2 分别绘制两个具有不同行数的热图。有什么方法可以设置绘图的输出,以使两个热图之间的实际单元格大小完全相同?

library(gplots)
data(mtcars)
x<-as.matrix(mtcars)
###  this heatmap has 32 rows
heatmap.2(x,key=F)


x1<-x[1:10,]
###  this heatmap has 10 rows
heatmap.2(x1,key=F)

【问题讨论】:

  • 当你说单元格大小时,你是指行高吗?
  • @TARehman 是的,我希望输出图中每行的高度和每列的宽度都相同
  • 如果你想试试ggplot2

标签: r plot


【解决方案1】:

这可以通过使用heatmap.2 的lmat、lhei 和lwid 参数来完成,尽管方式有些笨拙。这个参数被传递给layout 并布置图像的各个部分。

library(gplots)
data(mtcars)
x <- as.matrix(mtcars)
###  this heatmap has 32 rows
heatmap.2(x = x,
          key = F,
          lmat = matrix(c(4,2,3,1),
                        nrow=2,
                        ncol=2),
          lhei = c(0.1,0.9),
          lwid = c(0.3,0.7))

如您所见,矩阵参数给出的矩阵如下所示:

     [,1] [,2]
[1,]    4    3
[2,]    2    1

首先绘制热图,然后是行树状图,然后是列树状图。 lhei 和 lwid 的参数给出了 lmat 中描述的每个布局列和行的相对大小。有了一些创造力,您可以布置面板,让您可以根据需要上下移动东西。作为概念证明,我刚刚做了以下操作,将lhei 缩放为10/32。

x1<-x[1:10,]
###  this heatmap has 10 rows
heatmap.2(x = x1,
          key = F,
          lmat = matrix(c(4,2,3,1),
                        nrow=2,
                        ncol=2),
          lhei = c(1-0.9*(10/32),0.9*(10/32)),
          lwid = c(0.3,0.7))

之前:

之后:

【讨论】:

  • 太酷了!非常感谢你。顺便说一句,您知道如何将行标签放在左侧,将树状图放在右侧吗?
  • 不确定行标签,但有些选项看起来可能会有所帮助。对于树状图,您可以更改矩阵以将 2 放在该行的 1 之前,但您需要弄清楚如何让它从右到左。
猜你喜欢
  • 2021-01-18
  • 2021-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-29
  • 2021-09-30
  • 2017-10-31
  • 2020-12-12
相关资源
最近更新 更多