繁体   English   中英

R中的热图如何调整列标签的大小?

[英]heatmap in R how to resize columns labels?

我有一个大约 4000 行和 100 列的 data.matrix。 我正在做数据的热图,例如:

data<-heatmap(data_matrix,Rowv=NA,Colv=NA,col=cm.colors(256),scale="column",margins=c(5,10))

但是我遇到的问题是列中出现的标签过于分组,因此无法正确可视化它们。 如何调整热图的大小,以便查看列标签的值? 我试图用pdf打印它,但它只出现一条黑色条纹。 谢谢

我包括了一个热图图,我想看到的部分是位于正确部分的标签,但它们靠得太近了。在此处输入图片说明

首先,最好将您的输出直接放入 PDF 文件 - 您可以使用其他图像格式,但 PDF 是最好的,因为它是矢量输出,您可以根据需要进行缩放:

pdf("Your-file.pdf", paper="a4", width=8, height=8)

那么最好使用pheatmap (=漂亮的热图)包。 除了您的热图外,它还可以使用颜色键制作更好的热图。 最后,尽管pheatmap()函数尝试在您有很多行时减小标签大小,但是对于非常多的行却失败了。 因此,我将下面的代码用于非常高 - 但不是太高 - 的行数:

library(pheatmap)   
library(gplots)
if (nrow(table) > 100) stop("Too many rows for heatmap, who can read?!")
fontsize_row = 10 - nrow(table) / 15
pheatmap(table, col=greenred(256), main="My Heatmap", cluster_cols=F, 
         fontsize_row=fontsize_row, border_color=NA)

您可以更改列标签的fontsize_col 您有许多有趣的选项,例如display_numbers ,可以在热图的单元格内设置值。 只需阅读?pheatmap

这是pheatmap()命令的默认参数生成的示例:

在此处输入图片说明

最后请注意,太多的行在显示器上很容易阅读,但对打印毫无用处。

在 Rstudio 中,您可以轻松调整图形窗口的大小,Rgui 也是如此。 或者,如果您将绘图保存到文件,您可以为您的图形使用更大的尺寸,例如在调用pdfpng时更大的widthheight

您可以使用 cexRow = 和 cexCol =。

您可以在??heatmap.2 中获取更多信息

# Row/Column Labeling
margins = c(5, 5),
ColSideColors,
RowSideColors,
cexRow = 0.2 + 1/log10(nr),
cexCol = 0.2 + 1/log10(nc),
labRow = NULL,
labCol = NULL,
srtRow = NULL,
srtCol = NULL,
adjRow = c(0,NA),
adjCol = c(NA,0),
offsetRow = 0.5,
offsetCol = 0.5,
colRow = NULL,
colCol = NULL

如果您使用pheatmap ( https://www.rdocumentation.org/packages/COMPASS/versions/1.10.2/topics/pheatmap ),您可以通过调整cellheight参数来展开这些标签。

如果您在 R notebook 中执行此操作,即使在运行代码时整个热图不会显示在您的输出窗口中,当您使用filename参数将热图保存到您的计算机时,pheatmap 将自动计算最佳大小输出文件,以便您的整个热图将显示在您的输出文件中。 如果此尺寸不符合您的喜好,您可以使用widthheight参数进行调整,但您不太可能想要这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM