如何画出美丽的弦图(Chord diagram)?

今天介绍很受欢迎又抓人眼球的弦图 (Chord diagram),它能直观展现多个变量之间的联系。
只需使用R包{circlize}[1]中的函数chordDiagram()即可出图。
第一步,安装与载入R包。
install.packages('circlize')  # 安装
library(circlize) # 载入
注:“#”后面为注释/解释部分。
第二步,准备合适的数据。
【代码显示不全时,可左右滑动】
# dataframe格式    mydata <- data.frame(Start = rep(c('S1', 'S2', 'S3'), 5),                      End = c('E1', 'E2', 'E3', 'E4', 'E5'),                      Links = 1:15)

mydata
上述虚拟的数据包括:Start, End, Links(假设数值越大,变量间关联性越强)。
准备就绪,可以开始作图了~
这里使用函数 chordDiagram() 来完成弦图的绘制,可以使用的数据格式包括 matrix 和 dataframe [R语言基本功:vector,factor,list,matrix以及dataframe],我们上面准备好的数据为 dataframe 形式。
先作个基础弦图,一行代码就可以搞定

# 基础弦图
chordDiagram(mydata) # 作图
circos.clear() # 还原所有参数
注:每次作图结束后运行circos.clear()十分重要,很多时候代码报错都可以通过运行该代码解决。
图中包括:最外层的标签(变量名),轨道型的坐标轴 (坐标轴上数值即Links数值),内侧环形区块(代表变量),以及中央连接各个区块的Links(条带,指代各个变量间关联情况)。以S1为例,其Links数值的总和为35,所以坐标轴的范围是0到35;举个例子,S1-E1间的Links数值为1,所以条带非常细,只占坐标轴上的一格。
值得一提的是,每次运行代码 chordDiagram(mydata) 图中配色都是随机的,会不一样哦。
如果想要不一样的风格,可以再对弦图进行一些修饰,举例如下:
【代码显示不全时,可左右滑动】
# 调整后的弦图chordDiagram(mydata,              grid.col = c(S1 = 'lightcoral', S2 = 'coral2', S3 = 'coral4',# 圆环的颜色                          E1 = 'lightgreen', E2 = 'green', E3 = 'green3', E4 = 'green4', E5 = 'olivedrab4'),              annotationTrack = c('name', 'grid'), # 显示变量名称及圆环,无坐标轴             col = hcl.colors(15), # 条带的颜色             transparency = 0.5,   # 透明度             directional = 1,      # 条带的方向。为1时,顺序从第一列到第二列,以此类推             link.lwd = 1,         # 条带边框的宽度             link.lty = 2,         # 条带边框的类型             link.border = 1)      # 条带边框的颜色circos.clear()
上图除了与基础版弦图类似的部分外,自定义了不同变量(环形区块)的颜色,Start 是红色系而 End 是绿色系。为了展示变量之间的方向,标出了作为起点的变量,即 S1-3 内侧多了半个小一点的环(其颜色与 End 部分对应)。
最后,如想要了解更多修饰图片的函数,可使用 R 的帮助功能 ?chordDiagram。[如何使用R语言自带的帮助功能?]
好啦,今天的内容就到这里。
如果有帮助,记得分享给需要的人

参考文献
[1]. Gu, Z. circlize implements and enhances circular visualization in R. Bioinformatics 2014.
(0)

相关推荐