用pheatmap畫熱圖

假裝是前言

學(xué)了很久的R贝椿,一直也沒啥進(jìn)展,之前一直覺得R不是很容易的東西嗎陷谱,復(fù)制粘貼代碼就好了烙博。。emmm烟逊,太年輕太年輕渣窜。。

我用R的日常就是畫熱圖宪躯,各種各樣的熱圖乔宿。所以網(wǎng)上能搜到的畫熱圖的教程我基本都看了一遍,heatmap3啊访雪,ggplot2啊都試過详瑞,最后還是覺得pheatmap用起來最容易上手。雖然ggplot2很強(qiáng)大冬阳,但是殺雞就殺雞蛤虐,拿牛刀干嘛?雖然pheatmap也有很多毛病肝陪,比如最不能忍的是沒法把column的標(biāo)簽給斜45°顯示驳庭,太不人性化了!

主要內(nèi)容整合自各種網(wǎng)上的教程及一個(gè)價(jià)值一毛錢的騰訊課堂課程,感興趣的可以花一毛錢聽一聽饲常,講真蹲堂,還是值一毛錢的??

安裝

#設(shè)置國內(nèi)鏡像
options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
options(BioC_mirror="https://mirrors.tuna.tsinghua.edu.cn/bioconductor")
install.packages('devtools')
library(devtools)
install_github("raivokolde/pheatmap")

直接用install.package("pheatmap")也能下載到一個(gè)pheatmap的包,但是用起來感覺和上面這種方式是不一樣的贝淤。也許是不同的版本柒竞, 用以上方式下載的版本更新一些。

繪圖前準(zhǔn)備

#清空環(huán)境變量
rm(list=ls())
#獲取當(dāng)前工作目錄
getwd()
#設(shè)置工作目錄
setwd('C:/Users/hans/Desktop/')

R四丟丟是默認(rèn)保存之前運(yùn)行過的環(huán)境變量的播聪,所以要先清除一下朽基。接下來看看當(dāng)前的工作目錄在哪,最后把工作目錄調(diào)到桌面上离陶。因?yàn)楹芏鄷r(shí)候老板給個(gè)excel放在其他位置可能不太容易找稼虎,所以統(tǒng)一放在桌面,等畫完了熱圖再統(tǒng)一歸檔到相關(guān)的文件夾中去招刨。

加載包加載數(shù)據(jù)

#加載包
library(RColorBrewer)#設(shè)置顏色用的
library(pheatmap)
#設(shè)置配色方案
cc = colorRampPalette(rev(brewer.pal(n=7, name="RdYlBu"))) #Rd=red Yl=yellow Bu=blue
#讀入文件霎俩,如果確實(shí)過多,會(huì)無法聚類沉眶,最好保證沒有缺失打却,或?qū)⑷笔鎿Q為0
TPS<-read.csv(file = "TPS_expr.csv",row.names = 1,header = T,check.names = F,na.string=0) 
#如果矩陣內(nèi)容是fpkm表達(dá)量,一般取log10(fpkm+1)繪圖
TPS=log2(TPS+1)

2020年2月28日 這里加一個(gè)補(bǔ)充:很多時(shí)候是直接拿到的excel谎倔,如果需要用csv的話就得每次手動(dòng)另存為柳击,就很麻煩。有沒有直接讀入excel的辦法呢传藏?當(dāng)然有啦腻暮。install.packages("readxl") && library(readxl)
接下來使用mydata<-read_excel("data",sheet=1) 即可。查看幫助可以得到更多使用實(shí)例喲毯侦。

RColorBrewer是一個(gè)很常用的調(diào)顏色用的包哭靖,具體用法就不贅述了可以看別的教程。常用的就是經(jīng)典的紅黃藍(lán)配色侈离,也有深紅和海軍藍(lán)的配色的(color = colorRampPalette(c("navy", "white", "firebrick3"))(100))试幽,具體怎么選擇就看老板和個(gè)人喜好,反正保證一篇文章里熱圖的配色一致就好了卦碾。
把拿到的excel表另存為csv格式铺坞,用read.csv讀取到R里。這里畫的是一個(gè)TPS基因家族的熱圖洲胖,于是就把矩陣的名詞用TPS命名了济榨。這里有幾個(gè)要設(shè)置的地方:
row.names=1設(shè)置的是第一列為數(shù)據(jù)的名稱,基本上是用基因的ID命名的绿映。
header=T是指第一行為數(shù)據(jù)的列名擒滑。
check.names=F這個(gè)特別重要腐晾,當(dāng)你的列名是以數(shù)字開頭的時(shí)候,比如有的時(shí)候數(shù)據(jù)是時(shí)間相關(guān)的丐一,6:00, 8:00, 10:00等藻糖,會(huì)在最前面顯示一個(gè)x并且冒號(hào)會(huì)給你替換成點(diǎn)(6:00x6.00)設(shè)置了檢查名稱為False之后就不會(huì)有這個(gè)問題了。這個(gè)點(diǎn)是在生信技能樹的vip群里看人家討論問題的時(shí)候?qū)W到的(感謝大佬們库车!???)
na.string=0是在一毛錢的課程里學(xué)到的巨柒,非常好用的一個(gè)參數(shù)。設(shè)置了0為缺失值之后柠衍,在后面畫圖的時(shí)候可以增加一個(gè)缺失值的顯示效果洋满,感覺還挺不錯(cuò)的。

接下來就是玄學(xué)取log了拧略。一毛錢的課程里提到:

如果矩陣內(nèi)容是fpkm表達(dá)量芦岂,一般取log10(fpkm+1)繪圖

但是只是說一般瘪弓。畢竟所有的工具所有的圖都是為文章服務(wù)的垫蛆,怎樣顯示效果好,能契合文章的講述方向腺怯,就取什么樣的值袱饭。我們一般取log2(fpkm+1)比較多。

繪圖

#繪圖
heatmap=pheatmap(TPS,color = cc(100),
                 main="TPS",
                 fontsize = 15,
                 scale="row",
                 border_color = NA,
                 na_col = "grey"
                 cluster_rows = T,cluster_cols = T,
                 show_rownames = T,show_colnames = T,
                 treeheight_row = 30,treeheight_col = 30,
                 cellheight = 15,cellwidth = 30,
                 cutree_row=2,cutree_col=2,
                 display_numbers = F,legend = T,
                 filename = "TPS.pdf"
)

參數(shù)解釋:
第一個(gè)參數(shù)是需要用pheatmap畫圖的數(shù)據(jù)
color: 設(shè)置顏色呛占。如果想畫得更精細(xì)一些虑乖,可以取cc(1000)
main: 標(biāo)題,會(huì)顯示在最上面
fontsize: row的字體大小
scale: 是否歸一化為正態(tài)分布晾虑,可選row,column,none疹味。一般對(duì)row進(jìn)行歸一化的情況比較多,column較少帜篇。
border_color: 是否顯示邊框及邊框的顏色糙捺,NA不顯示, red顯示紅色。支持簡單的顏色單詞
na_col: 設(shè)置缺失值的顏色笙隙,支持簡單顏色單詞洪灯,一般設(shè)置為灰色就滿好識(shí)別的。
cluster_rows & cluster_cols: 設(shè)置是否對(duì)行進(jìn)行聚類竟痰,這個(gè)就見仁見智签钩,看你的實(shí)際需求了。當(dāng)缺失值較多的時(shí)候是無法進(jìn)行聚類的坏快。一個(gè)解決辦法是讀取數(shù)據(jù)的時(shí)候不設(shè)置缺失值铅檩。
show_rownames & show_colnames: 是否顯示行/列的名稱
treeheight_row & treeheight_col: 當(dāng)前面設(shè)置了聚類之后,兩邊會(huì)出現(xiàn)聚類的樹莽鸿,這個(gè)參數(shù)是設(shè)置樹的高度的昧旨。
cellheight & cellwidth: 設(shè)置每個(gè)各自的寬度和高度。有的時(shí)候不設(shè)置這兩個(gè)值畫出來的樹容易放飛自我??
cutree_row & cutree_col: 是否根據(jù)聚類情況把樹切開,可以設(shè)置切開的份數(shù)臼予。
display_numbers: 設(shè)置是否顯示每個(gè)單元格的值鸣戴。這個(gè)也是個(gè)人喜好及文章需求。
legend: 設(shè)置是否顯示旁邊的bar狀圖例粘拾,emmmm好像還沒碰到說不要那個(gè)玩意兒的情況窄锅。。
filename: 設(shè)置輸出文件的名字缰雇∪胪担可以設(shè)置的文件類型有:pdf,png械哟,jpg疏之,tiff,bmp

基本上一個(gè)符合老板要求的熱圖要調(diào)的就是這些參數(shù)了暇咆,當(dāng)然還有很多奇技淫巧可以把熱圖做得花里胡哨的锋爪,我之前很多次想做得更好看一點(diǎn)都被老板拒絕了。爸业。心累其骄。行叭, 就這樣了扯旷。有需要?jiǎng)e的進(jìn)階熱圖的自己查別的教程去拯爽,乖。
晚安钧忽。

賣萌哥
2019年1月26日01點(diǎn)19分于西雙版納

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末毯炮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子耸黑,更是在濱河造成了極大的恐慌桃煎,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件崎坊,死亡現(xiàn)場(chǎng)離奇詭異备禀,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)奈揍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門曲尸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人男翰,你說我怎么就攤上這事另患。” “怎么了蛾绎?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵昆箕,是天一觀的道長鸦列。 經(jīng)常有香客問我,道長鹏倘,這世上最難降的妖魔是什么薯嗤? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮纤泵,結(jié)果婚禮上骆姐,老公的妹妹穿的比我還像新娘。我一直安慰自己捏题,他們只是感情好玻褪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著公荧,像睡著了一般带射。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上循狰,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天窟社,我揣著相機(jī)與錄音,去河邊找鬼晤揣。 笑死桥爽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的昧识。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼盗扒,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼跪楞!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起侣灶,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤甸祭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后褥影,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體池户,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年凡怎,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了校焦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡统倒,死狀恐怖寨典,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情房匆,我是刑警寧澤耸成,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布报亩,位于F島的核電站,受9級(jí)特大地震影響井氢,放射性物質(zhì)發(fā)生泄漏弦追。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一花竞、第九天 我趴在偏房一處隱蔽的房頂上張望骗卜。 院中可真熱鬧,春花似錦左胞、人聲如沸寇仓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽遍烦。三九已至,卻和暖如春躺枕,著一層夾襖步出監(jiān)牢的瞬間服猪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來泰國打工拐云, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留罢猪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓叉瘩,卻偏偏與公主長得像膳帕,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子薇缅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容