减少 igraph 中自循环的大小

Reduce size of self-loops in igraph

我有一个图,但是自环相对于网络来说很大,有没有办法在不改变图的其余部分的情况下减小自环的大小?

测试数据:

test.matrix=cbind(mtcars$gear,mtcars$carb)
adj.mat=get.adjacency(graph.edgelist(as.matrix(test.matrix)))
g=graph.adjacency(adj.mat,mode="undirected")
plot(g)

我尝试更改 curve_multiple,但无济于事,并且在 documentation 中找不到与减小循环大小相关的任何内容。

igraph 绘图函数没有允许您更改循环大小的选项。 然而,对 igraph 源代码的一个小改动就可以解决问题。你可以通过运行

看到igraph plot函数
plot.igraph

您会发现 igraph plot 函数创建了一个名为 loop 的函数。在该函数中,您会找到以下行:

cp <- matrix(c(x0, y0, x0 + 0.4, y0 + 0.2, x0 + 0.4, 
     y0 - 0.2, x0, y0), ncol = 2, byrow = TRUE)

您可以通过将其更改为:

使循环成为 wide/high 的一半
cp <- matrix(c(x0, y0, x0 + 0.2, y0 + 0.1, x0 + 0.2, 
     y0 - 0.1, x0, y0), ncol = 2, byrow = TRUE)

@desc 评论说您可以使用

暂时对 igraph plot 函数源代码进行此更改
trace("plot.igraph",edit=TRUE)