前段時(shí)間在學(xué)習(xí)的時(shí)候看到了簡書更新,覺得小明哥的這種做法稍顯復(fù)雜携悯,作為R小白,我之前一直在用pheatmap做熱圖序臂,所以覺得做這種圖片還是熱圖來的快捷一些蚌卤。
原教程見
跟著Nature Metabolism學(xué)作圖:R語言ggplot2熱圖組合樹圖和雙層分組標(biāo)記 - 簡書 (jianshu.com)
image.png
首先還是之前的原圖文簡介:
image.png
三幅圖的結(jié)構(gòu)大致類似,復(fù)雜一點(diǎn)的是O圖奥秆,所以還是針對O圖的復(fù)現(xiàn)。
數(shù)據(jù)點(diǎn)擊這里即可下載:
下載好后新建一個(gè)project咸灿,復(fù)制之前的即可构订,然后打開。
image.png
打開找到數(shù)據(jù)位置避矢,先把NA換成 0 不然后面數(shù)據(jù)就沒法搞了悼瘾,然后選擇數(shù)據(jù)復(fù)制。
image.png
#加載一些常用的包
library(pheatmap)
library(data.table)
library(ggplot2)
#復(fù)制完后直接讀取剪切板
data <- read.delim('clipboard',header = T,row.names = 'X')
head(data)
image.png
#可以看到分組名就在列名里审胸,由此我們構(gòu)建一個(gè)分組
grouporg <- rep(c('brain','heart','lung','kidney','liver','vis','sc'),rep(3,7))
grouptissue <- rep(c('a','c','v'),7)
#構(gòu)建 熱圖的分組標(biāo)簽亥宿,是一個(gè)dataframe
annotation_col = data.frame(tissue = grouptissue ,
organ = grouporg)
rownames(annotation_col) <- colnames(data) ##rowname要和dataframe對應(yīng)。
## 分組的顏色 選一個(gè)喜歡的額顏色砂沛,構(gòu)建一個(gè)list
ann_colors =list(organ =c( brain="#bfc8bf",
heart="#8cb5ad",
lung="#648a86",
kidney="#9b9b75",
liver="#8d8d45",
vis = '#D1EEF2FF',
sc = '#ECE0C3FF'),
tissue = c(a = '#95C08BFF',
c = '#FFBEFEFF',
v = '#FF8B26FF'))
##畫圖 tips 圖片賦值對象外加括號就可以一邊賦值一邊出圖
(p = pheatmap(data, #熱圖的數(shù)據(jù)
cluster_rows = T,#行聚類
cluster_cols = F,#列聚類烫扼,可以看出樣本之間的區(qū)分度
annotation_col =annotation_col, #標(biāo)注樣本分類 就是剛才的分組
# annotation_row = annotation_row, #要是基因有分組的話,也可以構(gòu)建一個(gè)基因分組
annotation_legend=TRUE, # 顯示注釋
show_rownames = T,# 顯示行名
show_colnames = F,# 列名
# scale = "row", #以行來標(biāo)準(zhǔn)化碍庵,這個(gè)功能很不錯 但是畫出來對比了一下映企,原文沒有標(biāo)準(zhǔn)化
annotation_colors =ann_colors ,#組標(biāo)簽的顏色
gaps_col = c(3,6,9,12,15,18), #中間加一組gap悟狱,區(qū)分度更高
treeheight_row = 20, #聚類樹高低
treeheight_col = 0, # 列聚類樹,此處沒聚類堰氓,要是有設(shè)置為0就可以只聚類不顯示樹
clustering_distance_rows = "manhattan",##多種聚類方法可以嘗試挤渐,總有一款你喜歡
breaks = seq(-1.5,1.5,length.out = 100), ##熱圖的顏色 修改
color =colorRampPalette(c("black", "white","red"))(100),#調(diào)成一個(gè)順眼的顏色
main =' pheatmap ',border=F,#外邊框,喜歡無邊框的
cellwidth = 6, cellheight = 6,# 格子比例
fontsize = 6))
直接出的圖双絮,右側(cè)的標(biāo)簽和原圖稍有不符浴麻,pheatmap的缺點(diǎn)就是,標(biāo)簽不能直接寫到圖上的標(biāo)簽上(也可能是我沒發(fā)現(xiàn))
image.png
也是小問題,
pdf('123plot.pdf',width = 6,height = 4)
p
dev.off()
保存一下用AI修一下囤攀,把名字移上去即可
image.png
對比一下原圖
image.png
也差不多一致了白胀。