我已经多次阅读了heatmap.2帮助手册,并在各种在线教程中阅读,但并没有找到将色彩键移动到不同位置的方法。
现在,我想知道是否有可能实现?
如果您使用gplots包中的heatmap.2函数,默认情况下,颜色键位于左上角。
使用lmat
、lhei
和lwid
参数可以控制heatmap.2
图中每个元素的位置。这些参数由heatmap.2
传递给layout
命令:
layout(mat = lmat, widths = lwid, heights = lhei)
lmat
是一个描述如何将屏幕分割的矩阵。默认情况下,heatmap.2 将屏幕分成一个四元格网格,因此lmat
是一个2x2的矩阵。矩阵中每个元素中的数字描述了下一个要绘制的四个图的顺序。Heatmap.2 按以下顺序绘制其元素:
因此默认的 lmat
是:
> rbind(4:3,2:1)
[,1] [,2]
[1,] 4 3
[2,] 2 1
如果你想把钥匙放在热力图下面,你需要指定:> lmat = rbind(c(0,3),c(2,1),c(0,4))
> lmat
[,1] [,2]
[1,] 0 3
[2,] 2 1
[3,] 0 4
lwid
和lhei
是指定每行和每列的高度和宽度的向量。默认值为c(1.5,4)
。如果您更改了lmat
,则可能需要相应地更改这些值。对于上面的示例,如果我们想要保持所有其他元素的大小不变,但想在底部添加一个细色键,则可以设置:
>lwid = c(1.5,4)
>lhei = c(1.5,4,1)
我们现在可以准备绘制热图:>heatmap.2(x,...,lmat = lmat, lwid = lwid, lhei = lhei)
这将绘制一个热力图,其中列树形图位于热力图上方,行树形图位于左侧,并且键位于其下方。不幸的是,标题和键的标签是硬编码的。
更多有关 layout
如何工作的详细信息,请参见?layout
。
这段相当冗长的代码中,使用了par
调用定义了特定区域,我还没有看到其原始作者或任何“修订者”在这些部分附近,尽管他们有时会在R-help上出现。主要绘图尺寸由2元素向量margins
设置。以下是您可能需要进行更改的一些地方:
#1)
if (!missing(RowSideColors)) {
par(mar = c(margins[1], 0, 0, 0.5))
image(rbind(1:nr), col = RowSideColors[rowInd], axes = FALSE)
#2)
if (!missing(ColSideColors)) {
par(mar = c(0.5, 0, 0, margins[2]))
image(cbind(1:nc), col = ColSideColors[colInd], axes = FALSE)
#3)
par(mar = c(margins[1], 0, 0, margins[2]))
#4)
par(mar = c(margins[1], 0, 0, 0))
#5)
par(mar = c(0, 0, if (!is.null(main)) 5 else 0, margins[2]))
#6
if (key) {
par(mar = c(5, 4, 2, 1), cex = 0.75)