vlambda博客
学习文章列表

【方法介绍】利用R语言绘制弦图

【方法介绍】利用R语言绘制弦图
【方法介绍】利用R语言绘制弦图

About 弦图


R是一个免费的自由软件,它有UNIX、LINUX、MacOS和WINDOWS版本,都是可以免费下载和使用的。在R的安装程序中只包含了8个基础模块,其他外在模块可以通过CRAN获得。

弦图的优势是可视化两类具有相关性、转移关系,或者有相互作用关系的数据。其中弦图中弦的方向,反映了两类对象之间的转移关系,或相关关系;弦的粗细,反映了转移强度或相互作用强度。我们可以通过弦图反映不同年份间土地利用转移的特征,或利用不同城市间的人口出入的流量,反映不同城市间的交流强度等。

图片引用于:

http://circos.ca/intro/tabular_visualization/


【方法介绍】利用R语言绘制弦图


相关矩阵是绘制弦图的必要数据之一,它可以准确地反映不同对象两两之间存在的数值关系。除此之外,我们还可以使用邻接表,邻接表是相关矩阵的不同反映形式(主要是更好理解,具体差异如下图所示,分别为矩阵和邻接表)。


【方法介绍】利用R语言绘制弦图
【方法介绍】利用R语言绘制弦图


01

绘图前的准备


此次画图使用的软件版本是R i386 3.6.2

在绘图之前要提前在软件中安装circlize工具包,步骤如下:选择镜像工具,推荐选择Austria,这个镜像比较官方,成功选择后输入install.packages("circlize")安装工具包。


【方法介绍】利用R语言绘制弦图
【方法介绍】利用R语言绘制弦图


02

数据的准备


这里我们准备了一组实验数据(当然不能是实验原数据),这是一个转移矩阵,描述了土地利用类型从Map1到Map2的转移方式,我们可以种弦图对他进行可视化。


【方法介绍】利用R语言绘制弦图


03

构建邻接矩阵


1.数据输入:

为了显而易见,可以分行输入,按照原始数据表,每一行六个数据,共六行


cells<-c(48875,736,23,454,966,1192,

562,15138,43,51,142,220,

35,31,983,10,6,2,

61,16,3,17120,41,550,

6517,1081,20,599,7518,356,

3,0,0,95,0,3212)


2.定义行列名:

在这里我们定义行名rnames,为A1-6,列名cnames,为B1-6。


rnames<-c("A1","A2","A3","A4","A5","A6")

cnames<-c("B1","B2","B3","B4","B5","B6")


3.定义矩阵

使用matrix()定义矩阵,其中nrow与ncol为相应的行列数,应与名字对应。


fmatrix<-matrix(cells,nrow=6,ncol=6,byrow=FALSE,dimnames=list(rnames,cnames))


在数据输入后,我们可以查看一下数据是否有误,直接输入fmatrix进行查看,如下图所示:

【方法介绍】利用R语言绘制弦图


04

绘制弦图


首先对先前安装的工具包进行加载:


library(circlize)


使用工具包中的chordDiagram()函数绘制fmatrix矩阵,结果如下所示。


chordDiagram(fmatrix)


【方法介绍】利用R语言绘制弦图


弦图导出经常会出bug,使用复制粘贴或截图不够清晰,推荐使用file→save_as→PDF。



对于图像其他参数的调整,包括外围对象的顺序,间距,颜色,刻度,旋转角度,内部弦的边界颜色,填充颜色等,请点击阅读原文获取。



05

声明


以上所展示的是弦图的主要绘制方法,细节部分还需要大家进一步探索,希望能对大家在绘制可视化效果图方面有所引导。或许使用方法不规范,如有不当之处欢迎大家留言指正。



扫描二维码

回复R语言

获取相关教程







小玗的生态圈

给你不一样的科研感受

此时此地

Wish you were here