【问题标题】:Increasing row height in R heatmap() function在 R heatmap() 函数中增加行高
【发布时间】:2011-02-14 06:03:25
【问题描述】:

我有一个包含数百行和数十列的矩阵,并希望绘制热图。如果我使用原生 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 以为我有一个非常高的显示器?来自受良好支持的库中的函数也是一个很好的答案。

【问题讨论】:

    标签: r data-visualization


    【解决方案1】:

    不久前,我也遇到了同样的问题。 gplots 包中的 heatmap.2 函数解决了这个问题。但是,我不太明白查看这么多基因(或 rowlabs)有什么好处。但正如你所问的那样,你会做这样的事情:关键是改变热图的layout(参见?heatmap.2,?layout),它在绘图设备上的2x2网格上绘制热图(?layout中的示例解释了这好多了)。之后,您可能希望通过相应地更改cexRow 来更改rowlabscex。您的情况可能需要对这些值进行一些调整才能获得所需的结果。

    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()
    

    【讨论】:

    • 感谢您的帮助。在微阵列分析的假设生成阶段,一次查看这么多行(在这种情况下是探针组)可能很有用。同事有时会要求提供这种大小的热图,这样可以轻松放大并查看子集群中的基因。
    • 你能用 cex.lab=3 改变 x 和 y 轴标签的字体大小吗?这在热图中似乎对我不起作用。2 但是 cexRow=3 cexCol= 3 适用于热图中的值以放大它们。
    猜你喜欢
    • 2022-01-22
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 2017-03-16
    • 1970-01-01
    相关资源
    最近更新 更多