弦图是一种常用的进行表示一种成分向另一种成分转移或表示占比情况等的图。最常接触到的是在生物、医学等论文中,在地理学论文中发现也有人使用,做粮食安全、土地利用转移等。
在这里插入图片描述
本科时候就给老师干活,画过弦图,现在自己做一个类似于土地利用转移矩阵的图,所以也想使用弦图进行绘制。

关于弦图有很多介绍的代码,19年当时会用R语言画,现在已经都忘记了,再从头学代码太麻烦,所以使用Origin出图会简单很多。

当时使用的R语言代码

当时啥也不懂,也没有写代码的注释,导致自己现在再看的时候,除了知道修改输入和输出以及相关的行列名,里面的参数都不知道干啥的了。所以代码还是要有注释才行啊

library(statnet)
library(circlize) 
data<-read.csv("liangshi.csv",header=T,row=1) 
my.data<-as.matrix(data)
grid.col = NULL
colnames(my.data) <-c("X", "N", "C", "W")
rownames(my.data) <-c("S1", "S2", "S3", "S4","S5")
grid.col[c("S1", "S2", "S3", "S4","S5"] = c("PowderBlue", "DeepSkyBlue", "CornflowerBlue", "Blue","MidnightBlue"); 
grid.col[colnames(my.data)] = c("lavender", "khaki","mistyrose", "sienna1")
circos.par(gap.degree = c(rep(2, nrow(my.data)-1), 10, rep(2, ncol(my.data)-1), 10),
start.degree = 180)
chordDiagram(my.data,
directional = TRUE,
diffHeight = 0.06,
grid.col = grid.col, 
transparency = 0.5) 
legend("bottomright",pch=20,legend=colnames(my.data),
col=grid.col[colnames(my.data)],bty="n",
cex=1,pt.cex=3,border="black")
legend("topright",pch=20,legend=rownames(my.data),
col=grid.col[rownames(my.data)],bty="n",
cex=1,pt.cex=3,border="black")
pdf(file="liangshi.pdf", width=8, height=5, pointsize=8)
chordDiagram(my.data,directional = TRUE,diffHeight = 0.06,grid.col = grid.col, transparency = 0.5) 
legend("bottomright",pch=20,legend=colnames(my.data),col=grid.col[colnames(my.data)],bty="n",cex=1,pt.cex=3,border="black")
legend("topright",pch=20,legend=rownames(my.data),col=grid.col[rownames(my.data)],bty="n",cex=1,pt.cex=3,border="black")  
dev.off()

Origin中,弦图是分组图的一种,提供了绘图模板,关于一些详细介绍,可以看其他人的博文:
http://t.csdn.cn/VU3Xf或者Origin官方论坛等。
在这里插入图片描述

1、数据预处理

首先要将数据预处理成类似于土地利用转移矩阵的格式
在这里插入图片描述
如果是栅格数据等,关于求转移矩阵的方法就不再仔细介绍。最重要的是得到一个如图所示的表格进行绘图。

处理后得到一个类似于此的矩阵,当然也可以参考上面的其他人的教程。
在这里插入图片描述

2、绘图

将数据复制到Origin中,
在这里插入图片描述
全都选中后,打开绘图——分组图——弦图或比例弦图(比例弦图能显示比例)
在这里插入图片描述
要修改的是数据布局与X值和Y值的位置。
数据布局,如果是类似于我的
在这里插入图片描述
那就是从列到行连接,如果是反过来就是从行到列。从X到Y,从行到列**,多试一下就行**。
在这里插入图片描述
将鼠标光标放在图上,能显示从哪种情况到哪种情况,有多少转移,看是否和自己真实情况相符,不相符就是方向弄错了。

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐