我正在学习如何在 R 中创建圆形图,类似于 CIRCOS 我使用包 circlize 根据航班是否为 OB、入站和返回来绘制起点和目的地对之间的链接。数据的逻辑并不重要,它只是一个玩具示例
我已经根据下面的代码使情节工作,该代码基于以下逻辑工作
- 获取我的数据,将目的地列与航班类型结合起来
- 转换为矩阵并将原点和新列输入 circlize
library(dplyr)
library(circlize)
# Create Fake Flight Information in a table
orig = c("IE","GB","US","ES","FI","US","IE","IE","GB")
dest = c("FI","FI","ES","ES","US","US","FI","US","IE")
direc = c("IB","OB","RETURN","DOM","OB","DOM","IB","RETURN","IB")
mydf = data.frame(orig, dest, direc)
# Add a column that combines the dest and direction together
mydf <- mydf %>%
mutate(key = paste(dest,direc)) %>%
select (orig, key)
# Create a Binary Matrix Based on mydf
mymat <- data.matrix(as.data.frame.matrix(table(mydf)))
# create the objects you want to link from to in your diagram
from <- rownames(mymat)
to <- colnames(mymat)
# Create Diagram by suppling the matrix
par(mar = c(1, 1, 1, 1))
chordDiagram(mymat, order = sort(union(from, to)), directional = TRUE)
circos.clear()
我非常喜欢这个情节,但想稍微改变一下。例如,FI(即芬兰)在图 FI IB、FI OB 和 FI 上有 3 个测量值。如果可能的话,我想将它们全部组合在 FI 下,并使用配色方案、箭头或什至添加一个额外的轨道来区分三种类型的航班,作为 IB OB 和 RETURN 航班的保护伞
例如,
- FI OB 将放置在 FI 中,但有一个指向 GB 的单向箭头来表示 OB
- FI IB 将放置在 FI 中,但有一个单向箭头进入 FI
- FI RETURN(如果存在)将有一个双头箭头
谁能帮忙,有没有人见过类似的事情?最终结果应该只显示地图上的国家/地区,以便人们可以很快看到哪些国家/地区的航班数量最多
我曾尝试关注其他帖子,但恐怕当他们转向更高级的内容时我会迷路
非常感谢您的宝贵时间