ggplot2繪制相關性熱圖(heatmap)

你只是想畫個相關性熱圖!G镀鳌8卣妗!

生信分析中經(jīng)常要做基因與代謝物之間的相關性熱圖爽航,R中號稱繪制相關性熱圖的包有許多蚓让,但ggplot2始終是無敵的存在乾忱,運行以下代輕松搞定相關性熱圖。

library("ggplot2")
library("dplyr")
library("reshape")
library("psych")
library("ggtree")
library("aplot")
table1 <- mtcars[,1:5] %>% as.matrix()
table2 <- mtcars[,6:11] %>% as.matrix()
#讀入自己數(shù)據(jù)請執(zhí)行
table <- read.table("1.txt",header = T,sep="\t",check.names = F,row.names = 1)
##注:2張表的行名名稱與順序必須一致
#psych包的corr.test()計算相關性系數(shù)與P值,adjust = "fdr"進行多重矯正
pp <- corr.test(table1,table2,method="pearson",adjust = "fdr")
#抽提出相關性系數(shù)與P值
cor <- pp$r 
pvalue <- pp$p
#根據(jù)P值用循環(huán)將P值做成*
display <- pvalue
l1 <- nrow(display);l2 <- ncol(display)
for(i in 1:l1){
  for(k in 1:l2){
    a <- as.numeric(display[i,k])
    if(a <= 0.001){
      a <- "***"
    }
    if( 0.001 < a && a <= 0.01){
      a <- "**"
    }
    if(0.01 < a && a < 0.05){
      a <- "*"
    }
    if(a >= 0.05){
      a <- ""
    }
    display[i,k] <- a
  }
}
#對數(shù)據(jù)進行格式轉換適用于ggplot2繪圖
heatmap <- melt(cor)
heatmap[,4] <- melt(pvalue)[,3]
heatmap[,5] <- melt(display)[,3]
names(heatmap) <- c("sample","gene","cor","pvalue","display")
#導出數(shù)據(jù)
write.table (heatmap,file ="heatmap.xls", sep ="\t", row.names = F)  
#根據(jù)相關性系數(shù)矩陣历极,用ggtree繪制行聚類與列聚類樹
phr <- hclust(dist(cor)) %>% 
ggtree(layout="rectangular", branch.length="none")
phc <- hclust(dist(t(cor))) %>% ggtree() + layout_dendrogram()
#ggplot2繪制熱圖
pp <- ggplot(heatmap,aes(gene,sample,fill=cor)) + 
geom_tile()+
theme_minimal()+scale_fill_viridis_c()+
geom_text(aes(label=display),size=5,color="white")+
  scale_y_discrete(position="right")+xlab(NULL) + ylab(NULL)+
theme(axis.text.x = element_text(angle = 90,hjust=0.8,vjust=0.6))+
  theme(axis.text.x=element_text(family = "Times",
                                 face = "plain",colour = "black",size=10))+
  theme(axis.text.y=element_text(family = "Times",
                                 face = "plain",colour = "black",size=10))+
  theme(legend.text=element_text(face="plain",family = "Times",
                                 colour = "black",size = 10))+
  labs(fill = "expr")
#通過aplot包將聚類樹與熱圖拼接
pp %>% insert_left(phr, width=.1) %>%
  insert_top(phc, height=.1)
heatmap.jpeg
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末窄瘟,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子趟卸,更是在濱河造成了極大的恐慌蹄葱,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,681評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锄列,死亡現(xiàn)場離奇詭異图云,居然都是意外死亡,警方通過查閱死者的電腦和手機邻邮,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評論 3 399
  • 文/潘曉璐 我一進店門竣况,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人筒严,你說我怎么就攤上這事丹泉。” “怎么了萝风?”我有些...
    開封第一講書人閱讀 169,421評論 0 362
  • 文/不壞的土叔 我叫張陵嘀掸,是天一觀的道長。 經(jīng)常有香客問我规惰,道長睬塌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,114評論 1 300
  • 正文 為了忘掉前任歇万,我火速辦了婚禮揩晴,結果婚禮上,老公的妹妹穿的比我還像新娘贪磺。我一直安慰自己硫兰,他們只是感情好,可當我...
    茶點故事閱讀 69,116評論 6 398
  • 文/花漫 我一把揭開白布寒锚。 她就那樣靜靜地躺著劫映,像睡著了一般。 火紅的嫁衣襯著肌膚如雪刹前。 梳的紋絲不亂的頭發(fā)上泳赋,一...
    開封第一講書人閱讀 52,713評論 1 312
  • 那天,我揣著相機與錄音喇喉,去河邊找鬼祖今。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的千诬。 我是一名探鬼主播耍目,決...
    沈念sama閱讀 41,170評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼徐绑!你這毒婦竟也來了邪驮?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,116評論 0 277
  • 序言:老撾萬榮一對情侶失蹤泵三,失蹤者是張志新(化名)和其女友劉穎耕捞,沒想到半個月后衔掸,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體烫幕,經(jīng)...
    沈念sama閱讀 46,651評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,714評論 3 342
  • 正文 我和宋清朗相戀三年敞映,在試婚紗的時候發(fā)現(xiàn)自己被綠了较曼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,865評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡振愿,死狀恐怖捷犹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情冕末,我是刑警寧澤萍歉,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站档桃,受9級特大地震影響枪孩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜藻肄,卻給世界環(huán)境...
    茶點故事閱讀 42,211評論 3 336
  • 文/蒙蒙 一蔑舞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嘹屯,春花似錦攻询、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,699評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至婆翔,卻和暖如春拯杠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浙滤。 一陣腳步聲響...
    開封第一講書人閱讀 33,814評論 1 274
  • 我被黑心中介騙來泰國打工阴挣, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人纺腊。 一個月前我還...
    沈念sama閱讀 49,299評論 3 379
  • 正文 我出身青樓畔咧,卻偏偏與公主長得像茎芭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子誓沸,可洞房花燭夜當晚...
    茶點故事閱讀 45,870評論 2 361