2017-06-22 68 views
1

我正在使用pheatmapDocumentation)繪製熱圖。我在一個相當簡單的方法繪製一個矩陣:使用pheatmap時裁剪的列標籤

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

我圖的底部被截斷,使我無法看到列名在底部。它看起來像這樣:

enter image description here

請注意,這不是heatmap.2。

我試過this questionthis question的解決方案,以及我已經能夠通過谷歌和在這個功能的文檔中找到的其他東西。

我試圖增加使用par()和oma()以及cexRow的邊距。

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

對情節沒有影響。

我需要這樣做才能看到這些長列名,而不會減少我的繪圖大小。我只是想將底部的邊緣向下延伸。

+1

***重複的例子。***我們應該能夠重現你的錯誤/問題來幫助你。閱讀我在其他問題中提供的鏈接。 – Masoud

+0

爲什麼在使用pheatmap時鏈接到關於heatmap.2的文章?尤其是當你在帖子中提到這一點時。 – emilliman5

+0

@ emilliman5因爲他以前的問題被標記爲重複。附: ** ** downvoters **,不要downvote沒有任何評論。 – Masoud

回答

0

我想通了,希望如果任何人在將來有這個問題,它會有所幫助。

當您使用pheatmap的labels_col =參數時會發生這種情況。在我的場景中,這是一個使用DESeq2的RNA-seq項目,有一個識別樣品(色譜柱)的目標文件,但是對於我的色譜柱標籤,我使用了不同的色譜柱,因此標籤更易於理解,所以我使用了

labels_col=myThing$ThisOtherColumn 

另一列,雖然實際上包含字符和數字的字符串出於某種原因被讀爲整數向量。所以解決辦法是做

as.character(myThing$ThisOtherColumn) 

只要你給labels_col一個字符矢量它會自動調整列。

2

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) 

enter image description here

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

enter image description here