熱圖怎么做? | 熱圖函數pheatmap()

是不是會經常繪制熱圖?那熱圖怎么做?先看一眼這個函數的參數,這么多,而且最后還有省略號。那么我們應該怎么合理使用這些參數讓你的熱圖看起來更加高大上呢?

pheatmap(mat, color = colorRampPalette(rev(brewer.pal(n = 7, name =

“RdYlBu”)))(100), kmeans_k = NA, breaks = NA, border_color = “grey60”,

cellwidth = NA, cellheight = NA, scale = “none”, cluster_rows = TRUE,

cluster_cols = TRUE, clustering_distance_rows = “euclidean”,

clustering_distance_cols = “euclidean”, clustering_method = “complete”,

clustering_callback = identity2, cutree_rows = NA, cutree_cols = NA,

treeheight_row = ifelse((class(cluster_rows) == “hclust”) || cluster_rows,

50, 0), treeheight_col = ifelse((class(cluster_cols) == “hclust”) ||

cluster_cols, 50, 0), legend = TRUE, legend_breaks = NA,

legend_labels = NA, annotation_row = NA, annotation_col = NA,

annotation = NA, annotation_colors = NA, annotation_legend = TRUE,

annotation_names_row = TRUE, annotation_names_col = TRUE,

drop_levels = TRUE, show_rownames = T, show_colnames = T, main = NA,

fontsize = 10, fontsize_row = fontsize, fontsize_col = fontsize,

display_numbers = F, number_format = “%.2f”, number_color = “grey30”,

fontsize_number = 0.8 * fontsize, gaps_row = NULL, gaps_col = NULL,

labels_row = NULL, labels_col = NULL, filename = NA, width = NA,

height = NA, silent = FALSE, na_col = “#DDDDDD”, …)

第1步:數據準備

用來畫熱圖的數據

  • mat:用來畫熱圖的數據參數,一般是一個矩陣,數據是基因表達值,行代表基因,列代表樣本。

此次例子,我們選擇了一套GEO數據庫的肺癌數據,數據編號為GSE19804,120個樣本,其中包含60個癌癥樣本和60個癌旁正常樣本,前面我們使用t檢驗,并對p值進行BH校正,篩選fdr小于0.01的基因中前100個在癌癥相對于正常樣本中顯著差異表達的基因進行熱圖繪制。

部分數據顯示如下:

第2步:畫圖

如使用默認參數畫出來的熱圖,是不是很不好看?基因名和樣本名亂成一堆,也看不出來那些樣本聚類到了一起…這類熱圖怎么做?

第3步:參數調整

顏色參數

  • color:表示顏色,用來畫熱圖的顏色,可以自己定義,默認值為colorRampPalette(rev(brewer.pal(n = 7, name =”RdYlBu”)))(100),RdYlBu也就是Rd紅色,Yi黃色,Bu藍色的過度,則主調色為紅黃藍。

我們現在將其色調改為紅白藍,看下圖,是不是立馬好看多了?這種熱圖不知道該選什么顏色?網址顏色大全https://www.color-hex.com/color-names.html送給你。

數據變換參數

  • scale:是指對數值進行均一化處理,在基因表達量的數據中,有些基因表達量極低,有些基因表達量極高,因此把每個基因在不同處理和重復中的數據轉換為平均值為0,方差為1的數據,可以看出每個基因在某個處理和重復中表達量是高還是低,一般選擇做row均一化。
  • clustering_method:表示聚類方法,值可以是hclust的任何一種,如”ward.D”,”single”, “complete”, “average”, “mcquitty”, “median”, “centroid”, “ward.D2″。
  • cluster_rows:表示行是否聚類,值可以是FALSE或TRUE
  • clustering_distance_rows:行距離度量的方法,如歐氏距離
  • cutree_rows:行聚類數
  • treeheight_row:行聚類樹的高度,默認為50
  • gaps_row:對行進行分割,就不應對相應的行進行聚類
  • cluster_cols:表示列是否聚類,值可以是FALSE或TRUE
  • clustering_distance_cols:列距離度量的方法
  • cutree_cols:列聚類數
  • treeheight_col:列聚類樹的高度,默認為50
  • gaps_col:對列進行分割,就不應對相應的列進行聚類

我們現在將數據進行行均一化,聚類方法選擇complete,進行均一化之后的熱圖還沒有前面的好看,查看數據表達情況,我們發現最小的表達值3.149和最大的表達值13.533之間并沒有相差很大,因此這套數據其實不適合做均一化處理,畫出來的熱圖更好看。

色度條

就是熱圖右上角那個小小的長方條

  • legend:邏輯值,是否顯示色度條,默認為T
  • legend_breaks:顯示多少個顏色數值段
  • legend_labels:對色度條上對應位置的字符進行修改

我們對其進行字符修改,可以看到色度條上相應的數字變成了表示顏色高低表達的字符。

注釋條

  • annotation_colors:對標簽的顏色進行修改
  • annotation_legend:是否顯示標簽注釋條
  • annotation_row:數據框格式,用來定義熱圖所在行的注釋條
  • annotation_names_row:邏輯值,是否顯示行標簽名稱
  • annotation_col:數據框格式,用來定義熱圖所在列的注釋條
  • annotation_names_col:邏輯值,是否顯示列標簽名稱

這里我們以列注釋條為例。在注釋條中,這里可以看到正常樣本的大類中混有幾個癌癥樣本,癌癥大類中也混入了幾個正常樣本?你有沒有想過是為什么呢?當然,你也可以選擇不對列進行聚類,這樣樣本的順序可以隨你自己決定怎樣放在一起。

其他修改參數

  • main:設置圖的標題
  • fontsize:是設置所有除主圖以外的標簽的大小
  • number_color:字體的顏色
  • show_rownames:是否顯示行名
  • fontsize_row:行名的字體大小
  • labels_row:X軸坐標名設置
  • show_colnames:是否顯示列名
  • fontsize_col:列名的字體大小
  • labels_col:y軸坐標名設置

我們修改了字體大小,不顯示樣本名,以及設置圖片標題,到此時,經過一系列參數更改,是不是已經比一開始使用默認參數好看多了呢?(可以增加一個對比圖,GSE19804_tumor_vs_normal_heatmap6.png與GSE19804_tumor_vs_normal_heatmap1.png的 對比)。

當然還有一些其他的用到不多的參數,留給讀者自己去實驗一下吧…

小格子參數設置

熱圖是由一個個的小四方格子組成的,每一個小格子代表一個基因在一個樣本內的表達情況。

  • fontsize_number:小格子中數字大小
  • display_numbers:邏輯值,是否在小格子中顯示數字
  • number_format:小格子中數字顯示形式,但僅有在display_numbers=T時才能使用
  • na_col:設置小格子為缺失值時的顏色
  • cellwidth:表示每個小格子的寬度
  • cellheight:表示每個小格子的高度

輸出文件參數設置

一般可以直接將畫好的熱圖以png格式或者pdf格式進行寫出。

  • filename:輸出圖畫的文件名
  • width:輸出圖畫的寬度
  • height:輸出圖畫的高度

 

不想看復雜的代碼?想可視化一鍵繪圖?那就用百邁客云的繪圖工具啊。

 

 

 

最近文章
网络棋牌看牌器 老重庆时时开彩 快乐12三直选走势图 香港六合图库 六开彩开奖的结果 四川省金七乐今日开奖结果 广西快三视频直播 昨晚六给彩开什么特马 时时彩计划精准免费网页版 新时时缩水软件 体彩排五专家预测号码 广西福彩app官方下载 福彩快乐十分玩法 天津时时计划网站 北京pk记录手机版下载 乐彩国际是什么 六和彩特码