R語言:手把手教你畫pheatmap熱圖

R語言:手把手教你畫pheatmap熱圖

微生態(tài)

導(dǎo)讀:

pheatmap默認(rèn)會對輸入矩陣數(shù)據(jù)的行和列同時進(jìn)行聚類,但是也可以通過布爾型參數(shù)cluster_rows和cluster_cols設(shè)置是否對行或列進(jìn)行聚類,具體看分析需求。利用display_numbers參數(shù)可以在熱圖中的每個cell中填入想要的信息,例如相對豐度信息。利用cutree_rows和cutree_cols參數(shù)可以根據(jù)聚類產(chǎn)生的tree信息對熱圖進(jìn)行分割。利用annotation_col和annotation_row參數(shù)可以給橫或列添加分組信息。本文將先模擬輸入矩陣數(shù)據(jù),然后再展示這些參數(shù)的具體使用方法。

一、模擬輸入矩陣

set.seed(1995)

# 隨機(jī)種子

data=matrix(abs(round(rnorm(200, mean=0.5, sd=0.25))), 20, 10)

# 隨機(jī)正整數(shù),20行,20列

colnames(data)=paste("Species", 1:10, sep=".")

# 列名-細(xì)菌

rownames(data)=paste("Sample", 1:20, sep=".")

# 行名-樣品

data_norm=data

for(i in 1:20){

sample_sum=apply(data, 1, sum)

for(j in 1:10){

data_norm[i,j]=data[i,j]/sample_sum[i]

}

}

# 標(biāo)準(zhǔn)化

data_norm

圖1

二、聚類分析和熱圖

1. 基礎(chǔ)熱圖

library(pheatmap)

# 加載pheatmap包

pheatmap(data_norm)

# 繪制熱圖,結(jié)果如下:

圖2

2. colorRampPalette漸變色、cell尺寸調(diào)整

cellheight=15# 設(shè)置單元格高度

cellwidth=20# 設(shè)置單元格寬度

color=colorRampPalette(colors= c("blue","white","red"))(10) # 漸變?nèi)∩桨?/b>

cellheight=15,

cellwidth=20,

color=colorRampPalette(colors = c("blue","white","red"))(10)

)

圖3

3. 在cell中添加豐度

pheatmap(data_norm,

display_numbers=TRUE,

cellheight=15,

cellwidth=20,

color=colorRampPalette(colors = c("purple", "white", "green"))(10)

)

圖4

4. 在cell中添加mark

display_numbers=matrix:使用自定義矩陣數(shù)據(jù)

fontsize_number=18:mark大小

filename="name.png/pdf":保存

data_mark=data_norm

# 新建mark矩陣

for(i in 1:20){

for(j in 1:10){

if(data_norm[i,j] <= 0.001)

{

data_mark[i,j]="***"

}

else if(data_norm[i,j] <= 0.01 && data_norm[i,j] > 0.001)

{

data_mark[i,j]="**"

}

else if(data_norm[i,j] <= 0.05 && data_norm[i,j] > 0.01)

{

data_mark[i,j]="*"

}

else

{

data_mark[i,j]=""

}

}

}

# * 0.05>=p>0.01; ** 0.01>=p>0.001; *** 0.001>=p

pheatmap(data_norm,

cellheight=20,

cellwidth=25,

color=colorRampPalette(colors = c("purple", "white", "green"))(10),

display_numbers=data_mark,

fontsize_number=18,

filename="mark.pdf"

)

圖5

5. 根據(jù)tree將熱圖分割成2行3列

cutree_rows=num:分割行

cutree_cols=num:分割列

pheatmap(data_norm,

cellheight=20,

cellwidth=25,

color=colorRampPalette(colors = c("purple", "white", "green"))(10),

display_numbers=data_mark,

fontsize_number=18,

filename="mark_cut.pdf",

cutree_rows=2,

cutree_cols=3)

6. 添加樣品和物種的分組信息

annotation_col:列分組

annotation_row:行分組

annotation_colors:分組顏色

Group=c("A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "B", "B", "B", "B", "B", "B", "B", "B", "B", "B")

group_sample=data.frame(Group)

rownames(group_sample)=rownames(data_norm)

# 模擬樣品分組文件

group_sample

Genus=c("G1", "G1", "G1", "G1", "G1", "G2", "G2", "G2", "G2", "G2")

group_genus=data.frame(Genus)

rownames(group_genus)=colnames(data_norm)

# 模擬物種分組文件

group_genus

colors=list(Group=c(A="#1B9E77", B="#D95F02"),

Genus=c(G1="pink", G2="lightgreen"))

# 自定義樣品分組顏色,Genus分組使用默認(rèn)顏色

pheatmap(data_norm,

cellheight=20,

cellwidth=25,

color=colorRampPalette(colors = c("purple", "white", "green"))(10),

display_numbers=data_mark,

fontsize_number=18,

filename="mark_group.pdf",

cutree_rows=2,

cutree_cols=3,

annotation_col=group_genus,

annotation_row=group_sample,

annotation_colors=colors

)

pheatmap常用參數(shù)匯總:

display_numbers=TRUE # 使用默認(rèn)矩陣數(shù)據(jù)

display_numbers=matrix # 使用自定義矩陣數(shù)據(jù)

fontsize_number=18 # mark大小

cutree_rows=num # 分割行

cutree_cols=num # 分割列

scale="column" # 列標(biāo)準(zhǔn)化

scale="row" # 行標(biāo)準(zhǔn)化

cellwidth=20 # cell寬度

cellheight=20 # cell高度

fontsize_number=18 # mark大小

filename="name.pdf/png" # 保存,自動調(diào)整紙張大小

annotation_col # 列分組

annotation_row # 行分組

annotation_colors # 分組顏色

cluster_row = F # 橫向不聚類

cluster_column = F # 縱向不聚類

legend = F # 去除legend

border = F # 去除cell邊框

border_color = "blue" # cell邊框顏色

annotation_names_col = F # 不展示列l(wèi)egend的名稱

有需要關(guān)注我,并留言

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。