我需要绘制一个图形,其中所有边缘都很容易被发现(有标签),但“igraph”包完全重叠连接两个顶点的边,但不共享源和接收器。
这是一个例子。我发现layout.circle非常有用,因为我需要修复图形的顶点。
library("igraph")
Edges <- data.frame(from = c(1, 2, 2, 2, 3, 3),
to = c(2, 1, 3, 3, 1, 1))
g <- graph.edgelist(as.matrix(Edges))
plot(g, layout = layout.circle(g, params = list(root = 1)),
edge.label = letters[1:6])
如您所见,边缘#1和#2完全重叠。
我尝试使用edge.curved
选项,但结果同样令人失望:
plot(g, layout = layout.circle(g, params = list(root = 1)), edge.label = letters[1:6],
edge.curved = TRUE)
现在有两对边缘重叠,它们无法识别。 你知道有什么方法可以帮助我吗? 提前致谢
答案 0 :(得分:1)
问题似乎与使用edge.curved
函数计算边缘曲率的autocurve.edges
参数有关。显然这不能正确识别你的情况。您可以选择提供自己的曲率集,以便尝试以下内容:
E(g)$label <- letters[1:6]
edges_undir <- t(apply(get.edgelist(g), 1, range))
curves <- unlist(lapply( split(E(g)$label, list(edges_undir[,1], edges_undir[,2])),
function(x) { seq(0,.5, length.out=length(x))}))
plot(g, layout = layout.circle(g, params = list(root = 1)), edge.label=E(g)$label,
edge.curved = curves)
给出了情节