我有一个包含数百行和数十列的矩阵,并希望绘制一个热图。如果我使用 native R函数:

heatmap(matrix(sample(1:10000),nrow=1000,ncol=10))

我得到一个带有难以辨认的行标题的图形。我假设生成的图像与当前绘图设备的规范匹配。我希望控制行的高度,即使无法在当前设备上显示该行。简单地写一个高大的PNG只会在图像上方/下方添加空格:
png( '/looks_the_same_with_whitespace.png', width=500, height=1500)
heatmap(matrix(sample(1:10000),nrow=1000,ncol=10))
dev.off()

有没有一种干净的方法可以做到这一点,也许是通过欺骗R认为我有一个非常高的显示器?良好支持的库中的函数也是一个很好的答案。

最佳答案

前一段时间,我也遇到了同样的问题。 heatmap.2包中的gplots函数解决了该问题。但是,我不太了解查看如此多的基因(或行实验室)有什么好处。但是,按照您的要求,您将执行以下操作:关键是更改热图的layout(请参见?heatmap.2,?layout),该图将热图绘制在绘图设备的2x2网格上(?layout中的示例对此进行了详细说明)更好的)。之后,您可能需要通过相应地更改cex来更改rowlabscexRow。您的情况可能需要一些值才能获得所需的结果。

library(gplots)

row.scaled.expr <- matrix(sample(1:10000),nrow=1000,ncol=10)

png( 'heatmap_without_whitespace_smaller_row_lab.png', width=500, height=1500)
heatmap.2(row.scaled.expr, dendrogram ='row',
                 Colv=FALSE, col=greenred(800),
                 key=FALSE, keysize=1.0, symkey=FALSE, density.info='none',
                 trace='none', colsep=1:10,
                 sepcolor='white', sepwidth=0.05,
                 scale="none",cexRow=0.2,cexCol=2,
                 labCol = colnames(row.scaled.expr),
                 hclustfun=function(c){hclust(c, method='mcquitty')},
                 lmat=rbind( c(0, 3), c(2,1), c(0,4) ), lhei=c(0.25, 4, 0.25 ),
                 )
dev.off()

关于r - R heatmap()函数中增加行高,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12040240/

10-12 17:16
查看更多