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

时间:2012-10-26 13:09:35

标签: r heatmap

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

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

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

我包含了热图的图形,我想要看到的部分是正确部分的标签,但它们太靠近了。 enter image description here

4 个答案:

答案 0 :(得分:5)

首先,最好将输出直接放到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()命令的默认参数生成的示例:

enter image description here

最后请注意,显示屏上有太多行易于阅读,但无法用于打印。

答案 1 :(得分:1)

在Rstudio中,您可以轻松调整图形窗口的大小,同样适用于Rgui。或者,如果将绘图保存到文件,则可以使用更大的图形尺寸,例如:致电widthheight时,pdfpng会更大。

答案 2 :(得分:0)

您可以使用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

答案 3 :(得分:0)

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

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