是不是會經(jīng)常繪制熱圖?那熱圖怎么做?先看一眼這個函數(shù)的參數(shù),這么多,而且最后還有省略號。那么我們應(yīng)該怎么合理使用這些參數(shù)讓你的熱圖看起來更加高大上呢?
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步:數(shù)據(jù)準(zhǔn)備
用來畫熱圖的數(shù)據(jù)
- mat:用來畫熱圖的數(shù)據(jù)參數(shù),一般是一個矩陣,數(shù)據(jù)是基因表達值,行代表基因,列代表樣本。
此次例子,我們選擇了一套GEO數(shù)據(jù)庫的肺癌數(shù)據(jù),數(shù)據(jù)編號為GSE19804,120個樣本,其中包含60個癌癥樣本和60個癌旁正常樣本,前面我們使用t檢驗,并對p值進行BH校正,篩選fdr小于0.01的基因中前100個在癌癥相對于正常樣本中顯著差異表達的基因進行熱圖繪制。
部分?jǐn)?shù)據(jù)顯示如下:
第2步:畫圖
如使用默認(rèn)參數(shù)畫出來的熱圖,是不是很不好看?基因名和樣本名亂成一堆,也看不出來那些樣本聚類到了一起…這類熱圖怎么做?
第3步:參數(shù)調(diào)整
顏色參數(shù)
- color:表示顏色,用來畫熱圖的顏色,可以自己定義,默認(rèn)值為colorRampPalette(rev(brewer.pal(n = 7, name =”RdYlBu”)))(100),RdYlBu也就是Rd紅色,Yi黃色,Bu藍色的過度,則主調(diào)色為紅黃藍。
我們現(xiàn)在將其色調(diào)改為紅白藍,看下圖,是不是立馬好看多了?這種熱圖不知道該選什么顏色?網(wǎng)址顏色大全https://www.color-hex.com/color-names.html送給你。
數(shù)據(jù)變換參數(shù)
- scale:是指對數(shù)值進行均一化處理,在基因表達量的數(shù)據(jù)中,有些基因表達量極低,有些基因表達量極高,因此把每個基因在不同處理和重復(fù)中的數(shù)據(jù)轉(zhuǎn)換為平均值為0,方差為1的數(shù)據(jù),可以看出每個基因在某個處理和重復(fù)中表達量是高還是低,一般選擇做row均一化。
- clustering_method:表示聚類方法,值可以是hclust的任何一種,如”ward.D”,”single”, “complete”, “average”, “mcquitty”, “median”, “centroid”, “ward.D2″。
- cluster_rows:表示行是否聚類,值可以是FALSE或TRUE
- clustering_distance_rows:行距離度量的方法,如歐氏距離
- cutree_rows:行聚類數(shù)
- treeheight_row:行聚類樹的高度,默認(rèn)為50
- gaps_row:對行進行分割,就不應(yīng)對相應(yīng)的行進行聚類
- cluster_cols:表示列是否聚類,值可以是FALSE或TRUE
- clustering_distance_cols:列距離度量的方法
- cutree_cols:列聚類數(shù)
- treeheight_col:列聚類樹的高度,默認(rèn)為50
- gaps_col:對列進行分割,就不應(yīng)對相應(yīng)的列進行聚類
我們現(xiàn)在將數(shù)據(jù)進行行均一化,聚類方法選擇complete,進行均一化之后的熱圖還沒有前面的好看,查看數(shù)據(jù)表達情況,我們發(fā)現(xiàn)最小的表達值3.149和最大的表達值13.533之間并沒有相差很大,因此這套數(shù)據(jù)其實不適合做均一化處理,畫出來的熱圖更好看。
色度條
就是熱圖右上角那個小小的長方條
- legend:邏輯值,是否顯示色度條,默認(rèn)為T
- legend_breaks:顯示多少個顏色數(shù)值段
- legend_labels:對色度條上對應(yīng)位置的字符進行修改
我們對其進行字符修改,可以看到色度條上相應(yīng)的數(shù)字變成了表示顏色高低表達的字符。
注釋條
- annotation_colors:對標(biāo)簽的顏色進行修改
- annotation_legend:是否顯示標(biāo)簽注釋條
- annotation_row:數(shù)據(jù)框格式,用來定義熱圖所在行的注釋條
- annotation_names_row:邏輯值,是否顯示行標(biāo)簽名稱
- annotation_col:數(shù)據(jù)框格式,用來定義熱圖所在列的注釋條
- annotation_names_col:邏輯值,是否顯示列標(biāo)簽名稱
這里我們以列注釋條為例。在注釋條中,這里可以看到正常樣本的大類中混有幾個癌癥樣本,癌癥大類中也混入了幾個正常樣本?你有沒有想過是為什么呢?當(dāng)然,你也可以選擇不對列進行聚類,這樣樣本的順序可以隨你自己決定怎樣放在一起。
其他修改參數(shù)
- main:設(shè)置圖的標(biāo)題
- fontsize:是設(shè)置所有除主圖以外的標(biāo)簽的大小
- number_color:字體的顏色
- show_rownames:是否顯示行名
- fontsize_row:行名的字體大小
- labels_row:X軸坐標(biāo)名設(shè)置
- show_colnames:是否顯示列名
- fontsize_col:列名的字體大小
- labels_col:y軸坐標(biāo)名設(shè)置
我們修改了字體大小,不顯示樣本名,以及設(shè)置圖片標(biāo)題,到此時,經(jīng)過一系列參數(shù)更改,是不是已經(jīng)比一開始使用默認(rèn)參數(shù)好看多了呢?(可以增加一個對比圖,GSE19804_tumor_vs_normal_heatmap6.png與GSE19804_tumor_vs_normal_heatmap1.png的 對比)。
當(dāng)然還有一些其他的用到不多的參數(shù),留給讀者自己去實驗一下吧…
小格子參數(shù)設(shè)置
熱圖是由一個個的小四方格子組成的,每一個小格子代表一個基因在一個樣本內(nèi)的表達情況。
- fontsize_number:小格子中數(shù)字大小
- display_numbers:邏輯值,是否在小格子中顯示數(shù)字
- number_format:小格子中數(shù)字顯示形式,但僅有在display_numbers=T時才能使用
- na_col:設(shè)置小格子為缺失值時的顏色
- cellwidth:表示每個小格子的寬度
- cellheight:表示每個小格子的高度
輸出文件參數(shù)設(shè)置
一般可以直接將畫好的熱圖以png格式或者pdf格式進行寫出。
- filename:輸出圖畫的文件名
- width:輸出圖畫的寬度
- height:輸出圖畫的高度
不想看復(fù)雜的代碼?想可視化一鍵繪圖?那就用百邁客云的繪圖工具啊。>>立即使用

關(guān)注百邁客云,隨時隨地學(xué)習(xí)