立即注册找回密码

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

手机动态码快速登录

手机号快速注册登录

搜索

图文播报

查看: 564|回复: 0

[分享] 高大上的弦图

[复制链接]
发表于 2024-9-26 06:05 | 显示全部楼层 |阅读模式

登陆有奖并可浏览互动!

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录 手机动态码快速登录

×
首先来看看这样一幅图。



        看到它的第一感觉就是,这是什么东西!没错,这样一个圆形的、错综复杂的图就是弦图,属于圈图的一种,在高大上的生物学文章中会经常见到。那么这么复杂的图究竟是用来做什么的呢?别看图形让人眼花缭乱,它所表达的内容其实很简单,我总结了一下,弦图的作用大概分为两个部分。
第一,也是最重要的一点:高大上,让人眼花缭乱。

        没错,当你第一次看到它,心里想,卧槽,这是啥的时候,弦图最重要的作用也就完成了。
        好了好了,不黑弦图了,哈哈哈。
第二,才是最重要的一点:展示多个对象之间的关系。

        比如说,你是一个国际关系学院的学生,你有全球180个国家的贸易往来数据,你想用一张图来展示每一个国家之间往来的频率是高还是低,这些国家之间的关系是紧密还是疏离,那么弦图就是最好的选择了。(话说难道不是搞一个excel表格想看哪个国家看哪个国家就行了吗,180个国家的数据放到一张图里还不看到你眼瞎?如果有这个疑问,请参考上面说的弦图的作用第一点。)
        那么对于一个生物学的学生来说呢,弦图可以用来展示多个研究对象基因突变的情况,或者多个研究对象的生理指标变化的情况,只要你想用,弦图应用的场合还是很多的。
举个栗子

        还是从实例来看,假如你做了这样一个实验,你测定了5个细胞中5个染色体上面的基因突变个数,获得了如下的数据。



        当然,这种情况下你可以用分组柱状图的形式展示你的数据,但如果用弦图的话,你将会得到这样一张图。



        这样就很好理解了对吧,每一个细胞对应每一条染色体都有一条纽带连接,哪一条纽带越宽,说明这个细胞中的这一条染色体上面突变的最多。当然,如果你有更多维度的数据,你也可也用纽带的颜色,纽带离边缘的距离等等参数去表示多个维度的数据。
大佬是怎么做的?




        这是一张来源于今年的Nature Methods上的文章 Scalable whole-genome single-cell library preparation without preamplification中的一幅弦图,具体展示的数据指标我们先忽略,大佬用纽带的颜色代表了不同染色体之间的关系强弱,而没有用纽带的宽窄等参数,配色也采用偏冷色的色调,显得更加严肃。
我们怎么做?

        R中有一个专门用来做圈图的包,叫做circlize,除了弦图以外的各种圆形图都可以做,非常方便。
        首先安装并载入circlize包。
> library(circlize)
        然后将我们的数据导入,并放在一个矩阵当中,这里我的瞎编数据矩阵叫做mutation。



        弦图中的元素其实就包括两部分,外层的圈,代表各个研究对象;内层的纽带,代表各研究对象之间的关系。在画弦图之前我们要设置一下外圈各个对象的颜色,这里我们将各个染色体都设置成灰色,将5个细胞分别设置为5种颜色。然后要设置一下对象之间的缝隙,细胞要和细胞挨得近一些,染色体要和染色体挨得近一些,细胞和染色体之间缝隙要大一点。
> #设置各对象之间的缝隙,使用circos.par函数中的gap.after参数
> gap <- c(rep(5, nrow(mutation) - 1), 15, rep(5, ncol(mutation) - 1), 15)
> circos.par(gap.after = gap)
> #设置各外圈对象颜色,并绘制弦图
> grid.col <- c(细胞1 = &#34;red&#34;, 细胞2 = &#34;green&#34;, 细胞3 = &#34;blue&#34;, 细胞4 = &#34;yellow&#34;, 细胞5 = &#34;violetred&#34;, 染色体1 = &#34;grey&#34;, 染色体2 = &#34;grey&#34;, 染色体3 = &#34;grey&#34;,  染色体4 = &#34;grey&#34;, 染色体5 = &#34;grey&#34;)
> chordDiagram(mutation, grid.col = grid.col)



        可以看到绘制的过程非常简单,通过circos.par函数设置一些参数,通过chordDiagram函数绘制弦图。当然,你也可以设置许多参数,比如纽带的颜色,外围标签,背景颜色,透明度,高亮重要信息等等。具体的方法在下面的网站中,有需要可以查阅,之后我也会将一些常用的作弦图的小技巧总结出来,毕竟啃英文文档的时候是一把辛酸泪呀。
Circular Visualization in R
http://zuguang.de/circlize_book/book/the-chorddiagram-function.html
参考文献

【1】Nature Methods, 2017, Scalable whole-genome single-cell library preparation without preamplification
【2】Bioinformatics Applications Note, 2014, circlize implements and enhances circular visualization in R

【3】Zuguang Gu, Circular Visualization in R
欢迎我的关注微信公众号——生物与化学数据分析,化学狗与生物狗学习数据分析的好地方!有问题随时提出哦!

aHR0cDovL3dlaXhpbi5xcS5jb20vci9ienY3NDNqRTdTV1NyVHlBOTI1OQ== (二维码自动识别)

原文地址:https://zhuanlan.zhihu.com/p/28360518
楼主热帖
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册 微信登录 手机动态码快速登录

本版积分规则

关闭

官方推荐 上一条 /3 下一条

快速回复 返回列表 客服中心 搜索 官方QQ群 洽谈合作
快速回复返回顶部 返回列表