5

我正在使用pheatmap文档)绘制热图。我正在以一种相当简单的方式绘制一个矩阵:

pheatmap(mat, annotation_col=df, labels_col=rld$Infection_Line, fontsize_row=5, fontsize_col=7) 

我的情节的底部被切断了,所以我看不到底部的列名。它看起来像这样:

在此处输入图像描述

请注意,这不是 heatmap.2。

我已经尝试了这个问题这个问题的解决方案,以及我能够通过谷歌和这个函数的文档找到的其他东西。

我尝试使用 par() 和 oma() 以及 cexRow 来增加边距。

margins=(x,y); par(mar=c(1,2,3,4)); par(oma=c(1,2,3,4))  

对剧情没有影响。

我需要这样做,以便在不减小绘图大小的情况下看到这些长列名。我只想拉伸底部的边距。

4

3 回答 3

8

我想通了,希望将来如果有人遇到这个问题,它会有所帮助。

当您使用 pheatmap 的 labels_col= 参数时会发生这种情况。在我的场景中,这是一个使用 DESeq2 的 RNA-seq 项目,有一个识别样本(列)的目标文件,但是对于我的列标签,我使用了不同的列,因此标签更容易理解,所以我使用

labels_col=myThing$ThisOtherColumn

另一列虽然实际上是一个包含字符和数字的字符串,但由于某种原因被读取为整数向量。所以解决方案是做

as.character(myThing$ThisOtherColumn)

只要您给 labels_col 一个字符向量,它就会自动调整列。

于 2017-06-22T14:08:39.253 回答
5

pheatmap使用网格图形,因此基本图形功能par()不会产生影响。我发现调整参数cellheightcellwidth手动可以帮助调整页面上热图的整体大小。或者以某种方式调整边距。

library(pheatmap)
dfr <- as.data.frame(t(data.frame(x=runif(10),y=runif(10),z=runif(10))))
md <- data.frame(cat1=sample(x=letters[1:4],10,replace=T),cat2=sample(x=letters[6:7],10,replace=T))
rownames(md) <- colnames(dfr)
pheatmap(dist(as.data.frame(t(dfr))),annotation_col=md,annotation_row=md)

在此处输入图像描述

pheatmap(dist(as.data.frame(t(dfr))),annotation_col=md,annotation_row=md,
         cellheight=15,cellwidth=15)

在此处输入图像描述

于 2017-08-09T11:27:40.887 回答
1

我想详细说明一下rmf 的回答

关键问题是摆弄cellwidthandcellheight以及widthand height。前者改变了一个单元格占用了多少像素,后者改变了输出图像的大小。因此,如果您的绘图剪辑超出了图像的边缘,您可以减小像元大小或增加图像大小。

请注意,这只影响输出文件,而不影响您在 R 运行时看到的 R 绘图区域。

例子:

library(pheatmap)
set.seed(1)
data <- as.data.frame(matrix(rnorm(600), ncol=20))
rownames(data) <- paste(rownames(data), "looooong text")

然后...

# Doesn't fit on image
pheatmap(data, filename = "/tmp/example_1.png",
         cellwidth = 20, cellheight = 20,
         width = 7, height=9.1)

太大了

# Change cell sizes, keep width/height fixed
pheatmap(data, filename = "/tmp/example_2.png",
         cellwidth = 10, cellheight = 10, # <--- changed here
         width = 7, height=9.1)

小细胞

# Change width/height, keep cell sizes fixed
pheatmap(data, filename = "/tmp/example_3.png",
         cellwidth = 20, cellheight = 20,
         width = 9, height=10)   # <--- changed here

大绘图区

于 2020-08-13T13:43:09.873 回答