pheatmap是R語言中繪制熱圖的一個非常流行的包,通過設(shè)置不同的參數(shù)能夠畫出精美的圖。因此,本文章介紹一些pheatmap的一些基礎(chǔ)用法,以供參考。
library(pheatmap)
# 加載數(shù)據(jù)
setwd("D:/Desktop")
gene.exp <- read.table("tpm.txt", header = T, row.names = 1)
gene.expr[gene.expr < 1] <- 0 # 將數(shù)據(jù)中tpm值小于1的替換為0
gene.expr = gene.expr[apply(gene.expr, 1, function(x) sd(x)!=0),] # 去除標準差為0的行,會對后續(xù)聚類造成影響
# 進行繪圖
bk <- c(seq(-2,-0.01,by=0.01),seq(0,2,by=0.01)) # 調(diào)整圖例的數(shù)值范圍
pheatmap(test, # 載入數(shù)據(jù)
scale="row", # 對數(shù)據(jù)按行進行歸一化,避免數(shù)值過大或過小對熱圖的影響
cluster_rows=TRUE, # 對行進行聚類
cluster_cols=TRUE, # 對列進行聚類
border_color = "white", # 調(diào)整單元格邊框顏色
show_rownames = FALSE, # 不顯示行名
color = c(colorRampPalette(colors = c("blue","white"))(length(bk)/2),
colorRampPalette(colors = c("white","red"))(length(bk)/2)), # 調(diào)整圖例的顏色
legend_breaks=seq(-2,2,1), # 設(shè)置顏色斷點
breaks=bk, # 調(diào)整圖例的數(shù)值范圍
treeheight_row = 0, # 去除行的聚類樹,即進行聚類但不顯示聚類樹
cutree_cols=2) # 按列對圖分割

image.png
我們也可以按照分組進行對熱圖中的樣品進行排序,同時我們也可以選取對特定的基因進行繪圖
library(tidyverse)
allmarker <- read.table("Allmarkers.txt", header = T)
class <- read.table("group.txt", header = T, row.names = 1)
selected_rows <- gene[rownames(gene) %in% allmarker$x,] # 挑選特定基因出來
sort_idx <- order(match(colnames(selected_rows), rownames(class)))
genenewcol <- selected_rows[, sort_idx] # 按照group中的樣品順序?qū)虮磉_matrix中的列進行排序
pheatmap(genenewcol, scale="row", cluster_rows =F, cluster_cols = F, annotation_col = class, show_rownames = F,
color = c(colorRampPalette(colors = c("blue","white"))(length(bk)/2),
colorRampPalette(colors = c("white","red"))(length(bk)/2)),
legend_breaks=seq(-3,3,1.5), breaks=bk, fontsize_row = 3))

顏色一樣的樣品排到一起