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

分享

ggtree:tree之神器

 微微悅明 2024-08-12 發(fā)布于北京

如果生物信息只學(xué)習(xí)一個R包,那一定是ggplot2。

如果ggplot2里只能選擇一種,那一定是ggtree。

在生物信息學(xué)領(lǐng)域,進(jìn)化樹是研究物種之間關(guān)系的重要工具,是我們分析工作中一定不能缺少的一環(huán),而ggtree就是一款繪制tree的大大大神器。

這款由可視化大神余光創(chuàng)老師研發(fā)的R神器,可謂是生物信息研發(fā)人員人手一份。

然而可惜的是,ggtree目前是全代碼操作,對于命令行操作不熟悉的老師使用起來較為困難。為了方便大家的使用,特將筆者自己梳理的ggtree的使用記錄分享下~

一、ggtree的安裝(僅需一次)

安裝 ggtree前先確保您已經(jīng)安裝了 R 語言和 RStudio。接下來在 R 控制臺中輸入以下代碼以安裝 `ggtree` 及其相關(guān)依賴包:

install.packages("BiocManager")BiocManager::install("ggtree")# install.packages("treeio")

二、讀入文件

 library("ggtree") library("treeio") library("dplyr")# 讀入tree文件 tree<-read.newick(nwkfile,node.label="label") # 讀入列表文件(可用于后續(xù)分組、標(biāo)記顏色等) meta<-read.delim(info,header=TRUE)

這里再啰嗦兩句,說明一下這里讀入的nwk文件是啥?nwk也就是Newick格式,是一種最用于表示進(jìn)化樹(系統(tǒng)發(fā)育樹)的文件格式。同時也是mega、fasttree等多種構(gòu)樹軟件的輸出文件格式。

nwk文件示例:

((A:0.1, B:0.2):0.3, C:0.4);

這就是一個簡單的Newick格式的樹,表示有一個四個節(jié)點的樹,其中A和B是子節(jié)點,C是另一個子節(jié)點,且各個分支具有特定的長度。

三、繪制tree(最關(guān)鍵的來了)

最簡單,最直接,但是不好看的tree

ggtree(tree)

為了美化,我們可以根據(jù)需要將其他相關(guān)數(shù)據(jù)(如物種分組信息)合并到樹數(shù)據(jù)框中。

# 讀入列表文件(可用于后續(xù)分組、標(biāo)記顏色等)meta<-read.delim(info,header=TRUE)tree_df <- fortify(tree)  # 合并tree和分組信息  tree_df <- tree_df %>%    left_join(meta, by = c("label" = "ID"))  # 繪制tree,并添加分組顏色p1 <- ggtree(tree_df,layout="roundrect",branch.length="none") +      geom_tippoint(aes(label = label, color = Group), size = 3) +      theme(legend.position = "right") p1 

這樣看,是不是順眼了很多?分組更為清晰明了一些啦。

具體解釋下ggtree示例中幾個小參數(shù)的具體含義:

geom_tippoint:用于在葉子節(jié)點(tip)上添加點,通常用于標(biāo)示具體的樣本或物種。可以通過size,color的具體設(shè)置來做節(jié)點的調(diào)整。

scale_color_manual: 用于自定義顏色的映射。當(dāng)你想要為不同的組或分類指定特定的顏色時很有用。

theme:用于自定義圖形的整體主題和樣式,比如字體、背景、網(wǎng)格線等。可以調(diào)整圖形的美觀性和可讀性。

annotate:用于在圖形上添加注釋,如文本、箭頭或標(biāo)記。這可以幫助解釋圖上的某些特征或數(shù)據(jù)。

layout 指定樹形狀的布局策略,比如樹的分支方向、葉節(jié)點的位置等。

除示例中的roundrect外,常用的另外兩種布局類型

    • "rectangular": 直角布局,默認(rèn)的基本布局,樹呈現(xiàn)為上下或左右結(jié)構(gòu)。

    • "circular": 圓形布局,與徑向布局類似,但葉節(jié)點沿圓的周圍均勻分布。

四、結(jié)果保存

這里同ggplot的其他包,都是用ggsave命令完成結(jié)果的保存。一般建議保存為pdf格式,方便后續(xù)修改。

ggsave("tree_plot.pdf", plot = p1, width = 10, height = 6)

五、批量運行

說實話如果是單個tree的繪制和美化,我并不建議用ggtree,網(wǎng)頁版的iTol是更好的選擇(步步圖解iTol-給進(jìn)化樹做個美顏

ggtree的優(yōu)點是更適于批量化本地運行。比如我們有一百個文件都需要做tree,我們可以如下操作

for (file in file_list) {  # 循環(huán)讀取樹文件    tree <- read.tree(file)  # 從文件名提取物種名  
# 創(chuàng)建樹數(shù)據(jù)框 tree_df <- fortify(tree)
# 合并分組信息 tree_df <- tree_df %>% left_join(meta, by = c("label" = "ID"))
# 繪制樹 p1 <- ggtree(tree_df, layout = "roundrect") + geom_tree() + geom_tippoint(aes(label = label, color = Group), size = 1) + theme(legend.position = "none") + annotate("text", x = max(tree$edge.length) * 0.5, y = -3,              label = file, size = 2, vjust = -1)  
# 保存每個圖   ggsave(paste0(species_name, ".pdf"), plot = p1, width =11, height = 5)  
# 將圖添加到列表中 plots[[length(plots) + 1]] <- p1 }
# 使用cowplot將圖合并,每行顯示5個圖 combined_plot <- plot_grid(plotlist = plots, ncol = 5)
# 保存合并后的圖形 ggsave("combined_tree_plot.pdf", plot = combined_plot)

此時,我們不僅得到了100個pdf格式的tree圖,還得到了一張整圖(涵蓋了所有結(jié)果)。這是iTol完全做不了的事情。

當(dāng)然,ggtree還有更多其他的優(yōu)點,比如,有更大的變化,支持各種變形。就像樂高一樣,ggtree其實沒有固定的套路,支持每個玩家自己的創(chuàng)造。

其官方教程如下:

https:///treedata-book/

最后再次感慨一下,學(xué)習(xí)真不是一件容易的事情。

長按關(guān)注



風(fēng)作伴,夢做馬,追啊迎啊最熱烈的年華

-年少的你啊


公眾號名稱:微微悅明

科學(xué)的樂趣是獲得新知識的喜悅~

高通量測序、大數(shù)據(jù)病原微生物檢測和監(jiān)測健康大數(shù)據(jù)行業(yè)資訊記錄與分享

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多