美文网首页
可视化:圆形进化树

可视化:圆形进化树

作者: 生信云笔记 | 来源:发表于2022-12-18 15:33 被阅读0次

  系统进化树(dendrogram ),一个用来展示亲缘关系的树状图解可视化方法。最常规的进化树大家应该不陌生,就是简单的树状分支结构。今天来分享一种进化树的高颜值画法。

画图

  废话咱就不多说了,还是直接上代码吧:

library(ggraph)
library(igraph)
library(RColorBrewer) 

# 边数据
d1 <- data.frame(from="origin", to=paste("group", seq(1,10), sep=""))
d2 <- data.frame(from=rep(d1$to, each=10), to=paste("subgroup", seq(1,100), sep="_"))
edges <- rbind(d1, d2)
head(edges)
    from     to
1 origin group1
2 origin group2
3 origin group3
4 origin group4
5 origin group5
6 origin group6

# 顶点数据
vertices <- data.frame(
  name = unique(c(as.character(edges$from), as.character(edges$to))) , 
  value = runif(111)
) 
vertices$group <- edges$from[ match( vertices$name, edges$to ) ]

vertices$id <- NA
myleaves <- which(is.na( match(vertices$name, edges$from) ))
nleaves <- length(myleaves)
vertices$id[ myleaves ] <-  seq(1:nleaves)
vertices$angle <-  90 - 360 * vertices$id / nleaves

# 调整标签的角度
vertices$hjust <- ifelse( vertices$angle < -90, 1, 0)
vertices$angle <- ifelse(vertices$angle < -90, vertices$angle+180, vertices$angle)
vertices[8:13,]
         name       value  group id angle hjust
8      group7 0.318456155 origin NA    NA    NA
9      group8 0.819013230 origin NA    NA    NA
10     group9 0.006172561 origin NA    NA    NA
11    group10 0.808990760 origin NA    NA    NA
12 subgroup_1 0.895307263 group1  1  86.4     0
13 subgroup_2 0.453732467 group1  2  82.8     0

# 创建 graph object
mygraph <- graph_from_data_frame( edges, vertices = vertices )

# 画图
p <- ggraph(mygraph, layout = 'dendrogram', circular = T) + 
            geom_edge_diagonal(colour="grey") +
            scale_edge_colour_distiller(palette = "RdPu") +
            geom_node_text(aes(x = x*1.15, y=y*1.15, filter = leaf, label=name, angle = angle, hjust=hjust, colour=group), size=2.7) +
            geom_node_point(aes(filter = leaf, x = x*1.07, y=y*1.07, colour=group, size=value, alpha=0.5)) +
            scale_colour_manual(values= rep( brewer.pal(9,"Paired") , 30)) +
            scale_size_continuous( range = c(0.1,10) ) +
            theme_void() +
            theme(legend.position="none") + 
            expand_limits(x = c(-1.5, 1.5), y = c(-1.5, 1.5))
p

结果如下:

  图还是很漂亮的,只是画图前需要准备一下相应的数据。edges包含边与边之间的成对关系,vertices包含每个顶点的具体距离值以及一些绘图的参数值。数据有了,就可以创建graph对象并画图了。画出的图是基于ggplot2对象,扩展性方面没有什么疑问。

结束语

  虽然现在疫情防控政策松了下来,但大家的情绪好像还是很焦虑。三年抗疫过程,大家都经历过大大小小的各种不确定性。面对未知的、不确定的情况,心理上出现短暂的不适应状态如担忧、焦虑的情绪也都是正常的反应。疫情的阴霾终将散去,希望这一天快些到来吧!

往期回顾

可视化:和弦图
LACE-seq 保姆级教程
可视化:两种方法绘制桑基图
可视化:density与ridgeline
单细胞:不同亚群的基因平均表达热图

相关文章

  • 可视化:圆形进化树

      系统进化树(dendrogram ),一个用来展示亲缘关系的树状图解可视化方法。最常规的进化树大家应该不陌生,...

  • 蛋白保守结构域和进化树

    常规的MEME和进化树可视化,以及其它基因结构/注释信息结合进化树可视化,TBtools已经做的很好https:/...

  • R语言ggplot2作图如何去掉图例中的NA

    遇到这个问题是在使用ggtree可视化展示进化树的时候,我想给进化树的枝分组映射颜色 第一步是准备进化树文件 第二...

  • 进化树

    1.使用 ggtree 实现进化树的可视化和注释:https://cosx.org/2015/11/to-achi...

  • 演化分析

    演化包括了进化和退化,所以使用了演化而不是进化 参考: 基因集合可视化---如何更优雅、快速、方便而全面?进化树+...

  • 一文读懂进化树(图文详解)

    一、什么是进化树 系统发育进化树 (Phylogenetic tree):** 一般也叫系统进化树,进化树。它可以...

  • R语言ggtree做圆形进化树

    初发是在微信公众号,初心就是分享自己的经验和更多优秀的人交流,科研复盘以供后期自己使用。分享简书懒于排版,感觉较浪...

  • ggtree笔记

    进化树的可视化软件非常多,其中R包 ggtree 功能非常强大,非常灵活,简单记录自己的学习笔记 第一步:使用 m...

  • Python生成随机点

    坐标位于某个矩形内 该序列位于某个圆形内【方法一:拒绝采样】 该序列位于某个圆形内【方法二:极坐标】 随机点可视化...

  • 2020-09-23 windows电脑使用MEGA_X_10.

    对于画进化树,其实有很多的软件和方法,有命令行的,也有可视化界面的,还有在线网站(iTol)这样在线美化的,但是对...

网友评论

      本文标题:可视化:圆形进化树

      本文链接:https://www.haomeiwen.com/subject/gntsqdtx.html