1、讀取數(shù)據(jù)
原始數(shù)據(jù)結(jié)構(gòu)如下圖:
第一列為基因ID,?第五列及以后為各個(gè)樣本的表達(dá)量數(shù)據(jù),數(shù)值以FPKM表示。

讀取數(shù)據(jù)命令如下:
rawdata=
read.csv(?‘AllSample.genes_expression.csv’,???header=T)
2、數(shù)據(jù)清洗
原始數(shù)據(jù)中包含一些不參與分析的列,以及某些基因的表達(dá)量在所有樣本中均為零,需要在分析前去除。
操作代碼如下:
#將第一列數(shù)據(jù)作為行名保存
row.names(rawdata)<-rawdata$?Gene_ID
#刪除第一列位置信息和第四列正負(fù)鏈的數(shù)據(jù),并進(jìn)行行列轉(zhuǎn)置?tmp<-t(rawdata[,c(-1,-2,-3,-4)])
#刪除在所有樣本中表達(dá)量均為0的基因?cleandata<-tmp[,colSums(tmp!=0)>0]
這樣我們就得到了一個(gè)“干凈”的樣本×基因表達(dá)矩陣,便于后續(xù)分析。
3、PCA?分析
R語(yǔ)言內(nèi)置的prcomp()函數(shù)可以快速完成PCA計(jì)算,代碼如下:
data.pca<?-prcomp(cleandata,center=T,?scale.=)
#cleandat????為進(jìn)行分析的數(shù)據(jù)集
#center?一個(gè)邏輯值,控制變量是否應(yīng)該移位到零中心
#scale.一個(gè)邏輯值,控制是否對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化
prcomp??函數(shù)的返回值是一個(gè)特殊的對(duì)象,可以利用summary?函數(shù)來(lái)查看分析的結(jié)果。

具體參數(shù):
#Standard???????deviation?標(biāo)準(zhǔn)差,其平方為方差=特征值
#Proportion????of????Variance方差貢獻(xiàn)率
#Cumulative????????Proportion?方差累計(jì)貢獻(xiàn)率
輸出結(jié)果包括各主成分的標(biāo)準(zhǔn)差、方差貢獻(xiàn)率等,幫你判斷應(yīng)該保留多少主成分。
使用ggplot2包,輕松將PCA結(jié)果轉(zhuǎn)換為直觀的散點(diǎn)圖。
#加載ggplot?軟件包?library(ggplot2)
#根據(jù)PC1?及PC2生成散點(diǎn)圖,由于ggplot在繪圖時(shí)只接收數(shù)據(jù)框格式的數(shù)據(jù)集,因此需要使用as.data.frame函數(shù)來(lái)進(jìn)行轉(zhuǎn)換。
ggplot(?as.data.frame(?data.pcaSx),aes(x=PC1,y=PC2))+?geom_point()
圖片生成:

一張清晰的PCA圖就誕生了!樣本分布、組間差異一目了然。
PCA圖不僅能展示樣本聚類,還能通過(guò)顏色、形狀區(qū)分不同實(shí)驗(yàn)組,助力發(fā)現(xiàn)潛在離群樣本或批次效應(yīng),是表達(dá)數(shù)據(jù)分析的必備技能!如想學(xué)習(xí)更多生信分析技能,請(qǐng)登錄百邁客生物云課堂知識(shí)庫(kù),在線學(xué)習(xí)更多生信分析技巧。
]]>pheatmap的安裝非常簡(jiǎn)單,只需要在R軟件中執(zhí)行一行安裝代碼即可
install.packages('pheatmap')
安裝完成后,我們來(lái)看如何使用pheatmap來(lái)繪制聚類熱圖
# 加載軟件包
library('pheatmap')
# 生成繪圖用的數(shù)據(jù)
test = matrix(rnorm(200), 20, 10)
test[1:10, seq(1, 10, 2)] = test[1:10, seq(1, 10, 2)] + 3
test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] + 2
test[15:20, seq(2, 10, 2)] = test[15:20, seq(2, 10, 2)] + 4
colnames(test) = paste("Test", 1:10, sep = "")
rownames(test) = paste("Gene", 1:20, sep = "")
這段代碼實(shí)際上是利用隨機(jī)數(shù)生成了一個(gè)20 X 10的矩陣。
為了模擬不同樣品和基因之間的差異,我們將第一行到第10行中奇數(shù)列的數(shù)值全部加3,將第11行到第20行的偶數(shù)列數(shù)值全部加2,將15行到20行的偶數(shù)列全部加4。最后將列名命名為Test1 ~ Test10,將行名命名為Gene1~Gene 20,最終生成的數(shù)據(jù)格式如下圖

默認(rèn)參數(shù)繪制圖形只需要執(zhí)行以下代碼。
pheatmap(test)
生成的圖片如下圖:

當(dāng)默認(rèn)參數(shù)不能滿足我們的需求時(shí),我們可以根據(jù)自己的需要在此基礎(chǔ)上修改這個(gè)圖形。常見的一些參數(shù)設(shè)置如下:
pheatmap(test,?scale?=?"row")
# scale = “row”的含義是繪圖時(shí)按行進(jìn)行均一化。進(jìn)行均一化可以降低個(gè)別特殊樣品與其它樣品間的差異,這會(huì)使得其它樣品間的差異在圖形中更加顯著。一般我們?cè)诨诒磉_(dá)量進(jìn)行聚類分析時(shí),均是常用的參數(shù)。繪圖結(jié)果如下圖所示:

如果需要對(duì)配色方案進(jìn)行修改,可以修改color參數(shù),
# colorRampPalette函數(shù)可以設(shè)置3種顏色(只能是3種),它可以根據(jù)給定的向量生成漸變色,這三個(gè)參數(shù)分別指定了最大值,中間值和最小值的顏色。繪圖結(jié)果如下:pheatmap(test,?color?=?colorRampPalette(c("navy",?"white",?"firebrick3"))(50))

同時(shí),通過(guò)設(shè)置cluster_col和cluster_row參數(shù)可以控制是否取消對(duì)行或列進(jìn)行聚類分析,具體代碼及結(jié)果如下:
pheatmap(test,?cluster_col?=?FALSE)

show_rownames和show_colnames參數(shù)來(lái)控制是否顯示行名和列名,如下:
pheatmap(test,show_rownames=F,show_colnames=F)

display_numbers 和number_color 參數(shù)可以控制是否在圖中顯示數(shù)字及設(shè)置數(shù)字的顏色。
pheatmap(test,?display_numbers?=?TRUE,number_color?=?"blue")

cellwidth和cellheight兩個(gè)參數(shù)可以控制每個(gè)單元的長(zhǎng)度和寬度。參數(shù)main可以在圖片中添加標(biāo)題。
pheatmap(test,?cellwidth?=?15,?cellheight?=?12,?main?=?"Example?heatmap")

以上呢,就是在使用pheatmap繪制聚類熱圖時(shí)常用的一些參數(shù)。可以看到,使用pheatmap繪制聚類熱圖是非常簡(jiǎn)單快速的。通過(guò)組合不同的參數(shù),我們可以控制最終生成的圖片的樣式與效果。更多的功能和參數(shù)可以通過(guò)執(zhí)行pheatmap命令查看pheatmap自帶的幫助文檔來(lái)獵取!本期聚類熱圖的繪制我們就分享完啦,敬請(qǐng)關(guān)注其他圖形繪制。
截止目前,百邁客成功舉辦了三場(chǎng)零基礎(chǔ)R語(yǔ)言繪圖培訓(xùn)班.而由于我們培訓(xùn)班主要是小班教學(xué)(20人左右),以及老師行程問(wèn)題,還有部分老師未趕上前三期培訓(xùn),因此,現(xiàn)特征集R語(yǔ)言培訓(xùn)班東北、福建、西安、甘肅、北京場(chǎng)意向?qū)W員。如果您想學(xué)編程,想自己可以隨時(shí)繪制出編輯部要求的圖片,歡迎點(diǎn)擊下方按鈕聯(lián)系我們,我們會(huì)根據(jù)大家填寫的意向情況,安排后期的生信培訓(xùn)班場(chǎng)次,說(shuō)不定下一場(chǎng)就在你的城市哦。

關(guān)注我們,隨時(shí)隨地學(xué)習(xí)