溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用R語言的pheatmap繪制熱圖

發布時間:2022-03-21 10:39:25 來源:億速云 閱讀:627 作者:iii 欄目:開發技術

本篇內容主要講解“怎么用R語言的pheatmap繪制熱圖”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么用R語言的pheatmap繪制熱圖”吧!

pheatmap簡介:

Pretty Heatmaps——Implementation of heatmaps that offers more control over dimensions and appearance.

熱圖是對實驗數據(尤其是基因的表達量)分布情況進行分析的直觀可視化方法,可以用來進行實驗數據的質量控制和差異數據的具像化展示,還可以對數據和樣品進行聚類,觀測樣品實驗數據的相似性。

pheatmap使用方法,參數很多,這里給大家介紹比較常用的參數:

mat

需要繪制熱圖的數字矩陣。

color

表示顏色,賦值漸變顏色調色板colorRampPalette屬性,選擇“藍,白,紅”漸變,分為100個等級,,例:color =  colorRampPalette(c(“navy”, “white”, “red”))(100)

kmeans_k

繪制熱圖的行聚類數,如果是NA,那么行不會聚類。

breaks

設置mat數值范圍的數字序列

border_color

表示熱圖上單元格邊框的顏色,如果不繪制邊框,則使用NA

cellwidth

表示每個單元格的寬度,若選擇NA則表示適應窗口

cellheight

表示每個單元格的高度,若選擇NA則表示適應窗口

scale

表示值均一化的方向,或者按照行或列,或者沒有,值可以是"row",  “column” 或者"none"

cluster_rows

表示進行行的聚類,值可以是FALSE或TRUE

cluster_cols

表示進行列的聚類,值可以是FALSE或TRUE

clustering_distance_rows

表示行聚類使用的距離:歐式距離,相關系數等等

clustering_distance_cols

表示列聚類使用的距離:歐式距離,相關系數等等

clustering_method

表示聚類方法,值可以是hclust的任何一種,如"ward.D",“single”,  “complete”, “average”, “mcquitty”, “median”, “centroid”, “ward.D2”

clustering_callback

回調函數來修改聚類

cutree_rows

基于層次聚類(使用cutree)劃分行的簇數(如果未聚集行,則忽略參數)

cutree_cols

基于層次聚類(使用cutree)劃分列的簇數(如果未聚集行,則忽略參數)

treeheight_row

行的樹的高度,

treeheight_col

列的樹的高度

legend

TRUE或者FALSE,表示是否顯示圖例

legend_breaks

設置圖例的斷點,如legend_breaks =  -1:4

legend_labels

legend_breaks對應的標簽例:legend_breaks = -1:4, legend_labels =  c(“0”,“1e-4”, “1e-3”, “1e-2”, “1e-1”, “1”)

annotation_row

行的分組信息,需要使用相應的行名稱來匹配數據和注釋中的行,注意之后顏色設置會考慮離散值還是連續值,格式要求為數據框

annotation_col

列的分組信息,需要使用相應的列名稱來匹配數據和注釋中的列,格式要求為數據框

annotation_colors

用于手動指定annotation_row和annotation_col  track顏色的列表。

annotation_legend

是否顯示圖例的名稱。

annotation_names_row

是否顯示行注釋的名稱。

annotation_names_col

是否顯示列注釋的名稱。

show_rownames

是否顯示行名

show_colnames

是否顯示列名

main

圖的名字       

fontsize

圖的字體大小

fontsize_row

行名的字體大小,默認與圖的字體大小相同

fontsize_col

列名的字體大小,默認與圖的字體大小相同

angle_col

列標簽的角度,可選擇 (0, 45, 90, 270 and 315)

display_numbers

表示是否將數值顯示在熱圖的格子中,如果這是一個矩陣(與原始矩陣具有相同的尺寸),則顯示矩陣的內容而不是原始值。

number_format

設置顯示數值的格式,較常用的有"%.2f"(保留小數點后兩位),"%.1e"(科學計數法顯示,保留小數點后一位)

number_color

設置顯示內容的顏色

fontsize_number

設置顯示內容的字體大小

labels_row

代替行名的自定義標簽

labels_col

代替列名的自定義標簽

filename

圖片保存位置以及文件名

width

手動設置輸出文件的寬度(單位:英寸)

height

手動設置輸出文件的高度(單位:英寸)

silent

不繪制熱圖

na_col

缺失值的顏色

pheatmap包安裝與數據準備:

install.packages(pheatmap)     #安裝包
# load package
library(pheatmap)
data <- read.delim("D:/test.txt", header=T, row.names="gene")
data_subset <- as.matrix(data[rowSums(data)>80000,])
test<-data_subset

pheatmap基礎繪圖示例

# 默認繪圖
pheatmap(test)
# scale = "row"參數對行進行歸一化,還可設置 "column" and "none"
pheatmap(test, scale = "row")
# clustering_method參數設定不同聚類方法,默認為"complete",可以設定為'ward', 'ward.D', 'ward.D2', 'single', 'complete', 'average', 'mcquitty', 'median' or 'centroid'
pheatmap(test,scale = "row", clustering_method = "average")
# clustering_distance_rows = "correlation"參數設定行聚類距離方法為Pearson corralation,默認為歐氏距離"euclidean"
pheatmap(test, scale = "row", clustering_distance_rows = "correlation")
# color參數自定義顏色  更多顏色設置見:https://www.億速云.com/article/783
pheatmap(test, color = colorRampPalette(c("navy", "white", "firebrick3"))(50))
# cluster_row = FALSE參數設定不對行進行聚類
pheatmap(test, cluster_row = FALSE)
# legend_breaks參數設定圖例顯示范圍,legend_labels參數添加圖例標簽
pheatmap(test, legend_breaks = c(10000,20000,30000,40000,60000), legend_labels = c("10000","20000","30000","40000","60000"))
# legend = FALSE參數去掉圖例
pheatmap(test, legend = FALSE)
# border_color參數設定每個熱圖格子的邊框色
pheatmap(test, border_color = "black")
# border=FALSE參數去掉邊框線
pheatmap(test, border=FALSE)
# show_rownames和show_colnames參數設定是否顯示行名和列名
pheatmap(test,show_rownames=F,show_colnames=F)
# treeheight_row和treeheight_col參數設定行和列聚類樹的高度,默認為50
pheatmap(test, treeheight_row = 30, treeheight_col = 50)
# display_numbers = TRUE參數設定在每個熱圖格子中顯示相應的數值,number_color參數設置數值字體的顏色
pheatmap(test, display_numbers = TRUE,number_color = "black")
# number_format = "%.1e"參數設定數值的顯示格式
pheatmap(test, display_numbers = TRUE, number_format = "%.1e")
# 自定義數值的顯示方式
pheatmap(test, display_numbers = matrix(ifelse(test > 40000, "*", ""), nrow(test)))
# cellwidth和cellheight參數設定每個熱圖格子的寬度和高度,main參數添加主標題
pheatmap(test, cellwidth = 15, cellheight = 12, main = "Example heatmap")

對樣本或者基因標記分類

# 構建列注釋信息
my_sample_col <- data.frame(sample = rep(c("tumour", "normal"), c(4,2)),
                            Time=c(1,1,2,2,2,1)
                            )
row.names(my_sample_col) <- colnames(test)
head(my_sample_col)
    sample Time
T1a tumour    1
T1b tumour    1
T2  tumour    2
T3  tumour    2
N1  normal    2
N2  normal    1
# 構建行注釋信息,這里代碼產生分組信息,也可以從數據讀入一個表格,聚類樹分隔詳情見:https://www.億速云.com/article/508
list=pheatmap(test)
my_gene_col=cutree(list$tree_row,k=2)
my_gene_col <- data.frame(cluster = ifelse(test = my_gene_col == 1, yes = "cluster 1", no = "cluster 2"))
set.seed(1984)
my_random <- as.factor(sample(x = 1:2, size = nrow(my_gene_col), replace = TRUE))
my_gene_col$random <- my_random
head(my_gene_col)
             cluster random
Gene_00562 cluster 1      2
Gene_02296 cluster 2      2
Gene_03861 cluster 2      2
Gene_07390 cluster 2      2
Gene_08042 cluster 2      1
Gene_08694 cluster 1      1

準備好行列注釋就可以繪圖:

pheatmap(test, annotation_row = my_gene_col, annotation_col = my_sample_col)

自定義分組顏色:

ann_colors = list(
  Time = c("white", "firebrick"),
  sample = c(normal = "#1B9E77", tumour = "#D95F02"),
  cluster = c(`cluster 1` = "#7570B3", `cluster 2` = "#E7298A"),
  random=c(`1`="red",`2`="blue")
)
head(ann_colors)
# annotation_colors設定注釋信息的顏色
pheatmap(test, annotation_col = my_sample_col,annotation_row =my_gene_col , annotation_colors = ann_colors, main = "Title")

熱圖分塊顯示:

# 手動指定gap劃分區塊:gaps_row = c(6, 10)參數在第6和10行處添加gap, 要求對行不進行聚類。對應的還有gaps_col,大家也可以試試
pheatmap(test, annotation_col = my_sample_col, cluster_rows = FALSE, gaps_row = c(6, 10))
# cutree_col = 2,cutree_rows=2參數將列按聚類樹的結果分成兩部分, 要求對列和進行聚類
pheatmap(test,
         annotation_row = my_gene_col,
         annotation_col = my_sample_col,
         cutree_rows = 2,
         cutree_cols = 2)
# 自定義行的標簽名。注意:基因名稱的順序與原始表格的順序一致,而不是聚類后的順序:
labels_row = c("", "", "", "", "", "", "", "", "", "", "", "", "", "", "", 
               "", "", "TP53", "FLC", "her2","","","","","","AKT")
# labels_row參數添加行標簽
pheatmap(test, annotation_col = my_sample_col, labels_row = labels_row)

到此,相信大家對“怎么用R語言的pheatmap繪制熱圖”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女