减小igraph中自环的大小

减小igraph中自环的大小,r,igraph,R,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) 我尝试更改曲线\u倍数,但无效,在中找不到任何与减小回路大小相关

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

测试数据:

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)

我尝试更改
曲线\u倍数
,但无效,在中找不到任何与减小回路大小相关的内容。

IGRAPHE plot函数没有允许您更改回路大小的选项。 然而,对igraph源代码的一个小改动就可以实现这一点。通过运行,可以看到IGRAPHE 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)

绘图(igraph::simplify(g))
?请参见
?igraph::simplify
。如果您没有绑定到
igraph
,则
visNetwork
包非常棒,我确信您可以使用
selfReferenceSize
参数控制那里的自循环大小。@lukeA,simplify有帮助,但理想情况下我会保留循环,只是将它们变小。@pengchy,目前为止运气不好。我转而使用基于网络的
cytoscape.js
@pengchy,如果您仍在寻找解决方案,请查看下面马巴的答案。我使用
trace(“plot.igraph”,edit=TRUE)
重置源代码,您的解决方案工作得非常好!谢谢你的回答。
cp <- matrix(c(x0, y0, x0 + 0.2, y0 + 0.1, x0 + 0.2, 
     y0 - 0.1, x0, y0), ncol = 2, byrow = TRUE)
trace("plot.igraph",edit=TRUE)