我试图使用R中的chordDiagram()包中的circlize函数在R中生成一个Chord的修改版本。
假设我们有一个玩具示例(关于包的文档):
require(circlize)
df = expand.grid(letters[1:3], LETTERS[1:4])
df$value = 1
df$value2 = 3
chordDiagram(df[, 1:3])输出将非常简单:

现在,问题是:假设我需要使两个“结束”重叠来表示一个交点,例如,从b->A到从a->A的带状,以便它们在同一个扇区中“合并”彼此(如下图)。

这有可能吗?我没有在文档中找到任何示例,也没有能够执行这个任务--调整选项。
希望我说得很清楚。谢谢你的任何尝试。
发布于 2022-03-16 00:19:47
如果我正确理解你的问题,这是可能的。这是circlize的一个例子,我无耻地复制了这个例子来演示我的意思。
library(circlize)
routes = data.frame(Origin = c("GMP","CTS", "MEL","HND","BOM","SGN","PEK","TPE",
"OKA","SUB","DPS","JED","ITM","PEK","CAN","CUN",
"PEK","BNE","CGK","SHA"),
Destination = c("CJU","HND","SYD","FUK","DEL","HAN","SHA",
"HKG","HND","CGK","CGK","RUH","HND","CTU",
"PEK","MEX","SZX","SYD","SIN","CAN"),
Passengers = c(14L,10L,9L,9L,7L,7L,7L,6L,6L,6L,6L,6L,
5L,5L,5L,5L,5L,5L,5L,5L)
)
chordDiagram(routes, annotationTrack = c("name", "grid"))

发布于 2022-03-24 18:32:04
如果我正确地理解了你,你想在图表中做一些重叠的部分。例如,S3 -> E2和S2 -> E2。创建一个具有格式的矩阵,以便在图表中获得重叠路径。我将用下面的代码给出一个示例:
首先,创建一个具有不同值的S和E之间连接的矩阵:
library(circlize)
set.seed(999)
mat = matrix(sample(18, 18), 3, 6)
rownames(mat) = paste0("S", 1:3)
colnames(mat) = paste0("E", 1:6)
mat
E1 E2 E3 E4 E5 E6
S1 4 14 13 17 5 2
S2 7 1 6 8 12 15
S3 9 10 3 16 11 18接下来,创建一个dataframe,它具有从字符到具有值的另一个字符的列格式,以检查哪些模式更容易实现:
df = data.frame(from = rep(rownames(mat), times = ncol(mat)),
to = rep(colnames(mat), each = nrow(mat)),
value = as.vector(mat),
stringsAsFactors = FALSE)
from to value
1 S1 E1 4
2 S2 E1 7
3 S3 E1 9
4 S1 E2 14
5 S2 E2 1
6 S3 E2 10
7 S1 E3 13
8 S2 E3 6
9 S3 E3 3
10 S1 E4 17
11 S2 E4 8
12 S3 E4 16
13 S1 E5 5
14 S2 E5 12
15 S3 E5 11
16 S1 E6 2
17 S2 E6 15
18 S3 E6 18使用mat绘制输出
chordDiagram(mat)

如您所见,S3 -> E2和S2 -> E2的路径有一些重叠。
https://stackoverflow.com/questions/71485852
复制相似问题