减少igraph中自循环的大小

时间:2016-11-11 23:53:52

标签: 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)

我尝试更改curve_multiple,但没有用,并且在documentation中找不到与缩小循环大小相关的任何内容。

1 个答案:

答案 0 :(得分:2)

igraph绘图功能没有选项允许您更改循环的大小。 但是,对igraph源代码进行一些小改动就可以了。您可以通过运行

来查看igraph绘图功能
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)

通过将其更改为:

,可以将循环设置为宽/高一半
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图功能源代码进行此更改

trace("plot.igraph",edit=TRUE)