减少 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)
我有一个图,但是自环相对于网络来说很大,有没有办法在不改变图的其余部分的情况下减小自环的大小?
测试数据:
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)