小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

使用ComplexHeatmap包繪制個(gè)性化熱圖

 微笑如酒 2019-02-15

使用ComplexHeatmap包繪制個(gè)性化熱圖

作者:劉夢(mèng)瑤 諾禾致源 微生物信息

審稿:劉永鑫 中國(guó)科學(xué)院遺傳與發(fā)育生物學(xué)研究所

ComplexHeatmap包由顧祖光博士創(chuàng)建,是一個(gè)非常全面的繪制熱圖的R包,可以利用它來(lái)繪制許多文獻(xiàn)中的美圖,例如下圖展示的16S文獻(xiàn)分析中的熱圖。這里主要介紹一下如何用這個(gè)R包來(lái)繪制類(lèi)似的個(gè)性化熱圖。

檢測(cè)安裝加載包

# 檢測(cè)安裝CRAN包package_list = c('circlize','grid','BiocManager')for(p in package_list){if (!requireNamespace(p, quietly = TRUE))    install.packages(p)}# 檢測(cè)安裝bioconductor包package_list = c('ComplexHeatmap')for(p in package_list){if (!requireNamespace(p, quietly = TRUE))    BiocManager::install(p)}# 加載依賴(lài)包library(circlize)library(grid)library(ComplexHeatmap)

創(chuàng)建測(cè)試數(shù)據(jù)集

可以按照的Bioconductor官網(wǎng)上ComplexHeatmap包的說(shuō)明來(lái)創(chuàng)建一個(gè)測(cè)試數(shù)據(jù)(http:///packages/release/bioc/vignettes/ComplexHeatmap/inst/doc/s2.single_heatmap.html )

# 設(shè)置隨機(jī)數(shù)種子,保證數(shù)據(jù)分析隨機(jī)過(guò)程可重復(fù)set.seed(123)# 生成模擬數(shù)據(jù):12行成10列矩陣mat = cbind(rbind(matrix(rnorm(16, -1), 4),                  matrix(rnorm(32, 1), 8)),            rbind(matrix(rnorm(24, 1), 4),                  matrix(rnorm(48, -1), 8)))# 隨機(jī)重排mat = mat[sample(nrow(mat), nrow(mat)),          sample(ncol(mat), ncol(mat))]# 添加行、列名rownames(mat) = paste0('R', 1:12)colnames(mat) = paste0('C', 1:10)

一行命令繪圖

使用默認(rèn)參數(shù),一行命令即可出圖

#默認(rèn)對(duì)行和列都進(jìn)行聚類(lèi)Heatmap(mat)

調(diào)參美化

下面我們通過(guò)參數(shù)設(shè)置來(lái)進(jìn)行個(gè)性化熱圖定制。

使用HeatmapAnnotation函數(shù)可以構(gòu)建注釋對(duì)象,我們可以進(jìn)行自定義,也可以直接使用它的內(nèi)置函數(shù)。

注釋按位置來(lái)分類(lèi)可分為行注釋和列注釋?zhuān)粤凶⑨尀槔?,其?nèi)置函數(shù)按照?qǐng)D形的類(lèi)型可以分為6種,anno_points(),anno_barplot(),anno_boxplot(),anno_histogram(),anno_density(),anno_text()。

行注釋的內(nèi)置函數(shù)和列注釋類(lèi)似,前面加上row即可,如row_anno_points()。
詳細(xì)示例可參照網(wǎng)址:http:///packages/release/bioc/vignettes/ComplexHeatmap/inst/doc/s4.heatmap_annotation.html 。

本文重點(diǎn)討論anno_points()的用法。

# 生成包含10個(gè)0.5數(shù)值的向量value = rep(0.5,10)# 設(shè)置值、形狀、大小、顏色等ha = HeatmapAnnotation('type' = anno_points(value, pch=c(19,19,15,15,24,24,23,23,3,3), size = unit(7, 'mm'),gp = gpar(col = c('#bf94e4','#bf94e4','#bf94e4','#bf94e4','#1dacd6','#1dacd6','#1dacd6','#1dacd6','red','red')),border=FALSE,ylim=c(0,1)),show_annotation_name = FALSE)

“type”為這一行注釋的名稱(chēng),show_annotation_name = FALSE,即不顯示名稱(chēng)。pch可指定繪制點(diǎn)時(shí)使用的符號(hào),共25種,如上三角,下三角,圓形,方形等,具體可見(jiàn)《R In Action》。size可指定符號(hào)的大小,gp可指定符號(hào)的顏色。

# 批量按行中心標(biāo)準(zhǔn)化,減均值除方差,Z-scoremat_scaled = apply(mat, 1, scale)# 繼續(xù)原數(shù)據(jù)表列名rownames(mat_scaled) = colnames(mat)# 轉(zhuǎn)置才與原方向一致mat_scaled = t(mat_scaled)# 通過(guò)circlize包中的colorRamp2()函數(shù),來(lái)自定義顏色col_fun = circlize::colorRamp2(c(-3, 0, 3), c('black', 'white', 'yellow'))# 新矩陣shape<-mat_scaled#><><-ncol(mat_scaled)for(i in="" 1:x="" ){=""  =""  =""  =""  for="" (j="" in="" 1:y="" ){=""  =""  =""  =""  if(shape[i,j]="">=1){        shape[i,j]<-'+';} else{=""  =""  =""  =""><-'';  =""  =""  ="">

如需對(duì)數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化,需使用apply函數(shù)來(lái)處理數(shù)據(jù)。我們可以通過(guò)circlize包中的colorRamp2()函數(shù),來(lái)自定義顏色。對(duì)mat_scaled的數(shù)值進(jìn)行篩選,生成一個(gè)符號(hào)是加號(hào)或空值的新數(shù)據(jù)框。這一部分可以根據(jù)作圖要求來(lái)自定義。

P1=Heatmap(mat_scaled, name = 'hello',top_annotation = ha,col = col_fun,rect_gp = gpar(col = 'black',lty = 2, lwd = 1),cell_fun = function(j, i, x, y, width, height, fill) {grid.text(shape[i,j], x = x, y = y,gp = gpar(fontsize = 10,col='red'))},cluster_rows = FALSE,cluster_columns = FALSE, row_names_side = 'left',column_names_side='bottom',row_names_gp = gpar(col = c('#8B7500','#8B7500','#8B7500','#8B7500','#8B7500','#8B7500','#0000FF','#0000FF','#0000FF','#0000FF','#0000FF','#0000FF')))

name可定義圖例的名稱(chēng)。top_annotation 可引用上面定義好的列注釋, 并將列注釋放在heatmap上方;bottom_annotation 則將列注釋放在heatmap下方。rect_gp定義小方格的邊框顏色,線(xiàn)條類(lèi)型及寬度。cell_fun可以對(duì)heatmap的每個(gè)小方格進(jìn)行自定義,這里用其來(lái)顯示”+”號(hào),也可以顯示數(shù)字等。cluster_rows和cluster_columns可定義是否聚類(lèi)。row_names_side可定義行名的顯示位置,默認(rèn)值right。column_names_side可定義列名的顯示位置,默認(rèn)值bottom。row_names_gp可定義列名的顏色。

# 行名第一列texta = c('A','B','C','D','EEEEE','F','G','H','I','J','K','L')# 行注釋?zhuān)瑢挾葹樽畲笪谋緃a_texta =rowAnnotation(text = row_anno_text(texta), width = max_text_width(texta))# 行名第二列textb = c('M','N','O','P','Q','R','S','T','U','V','W','X')ha_textb =rowAnnotation(text = row_anno_text(textb), width = max_text_width(textb))# 添加行名注釋ht_list = P1 + ha_texta + ha_textb# 添加圖例對(duì)應(yīng)文字、形狀和顏色lgd = legendGrob(c('A','B','C','D','E'), pch = c(19,15,24,23,3),gp= gpar(col =c('#bf94e4','#bf94e4','#1dacd6','#1dacd6','red')))# 繪圖,添加熱圖圖例左,注釋圖例draw(ht_list,heatmap_legend_side = 'left',annotation_legend_list = list(lgd))

rowAnnotation中max_text_width可計(jì)算得到列名中最長(zhǎng)的文本寬度,legendGrob可自定義圖例的名稱(chēng),形狀,顏色。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多