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