R包iGraph中的循环循环

时间:2012-09-21 04:48:15

标签: r igraph

使用iGraph,我如何用圆形曲线表示自反节点?默认情况下,这些曲线由压缩或泪滴形状的环表示。

2 个答案:

答案 0 :(得分:8)

正如Spacedman所说,你需要做一些编程才能做到这一点。你可以绘制一个没有自循环的图形然后添加它们(图形基本上是一个散点图,你可以使用points和类似的函数来为它们添加线条),但这不是微不足道的(特别是因为你需要知道节点的边缘,而不是它们的中心),并且会导致自循环被绘制在其他可能看起来不太好的东西之上。

本周末,我更新了qgraph自我循环的工作原理。 qgraph可用于绘制网络,并且可以与igraph很好地配合使用。 e.g:

# An adjacency matrix:
A <- matrix(1,3,3)

library("igraph")
# igraph graph and layout:
Graph <- graph.adjacency(A)
Layout <- layout.circle(Graph)

# Plot in qgraph:
library("qgraph")
qgraph(get.adjacency(Graph,sparse=FALSE),layout=Layout,diag=TRUE,directed=TRUE)

enter image description here

我非常满意这些自我循环的结果,它们似乎更符合你的描述。所以这可能是一个选择。但是,我的循环就像硬编码一样。作为参考,我使用内部函数qgraph:::Cent2Edge计算节点的边缘(循环的起点和终点),并使用内部函数qgraph:::SelfLoop计算循环的形状(样条曲线)。

答案 1 :(得分:2)

plot.igraph内,您可以看到使用plot.bezier函数绘制循环,并且对此进行的所有控制都非常难以编码。您必须重写plot.igraph的大块来调用您必须写的plot.circle函数才能执行此操作。

另外,我猜你不想要完整的圆圈,但是在顶点符号的边缘(带有顶点数字的默认蓝色圆圈)开始并且结束的圆圈段(可能带有圆圈)一个箭头)在顶点符号边缘的另一部分?或者你是否想要像bezier泪滴环一样触摸符号的圆圈?

无论哪种方式,答案似乎都是“不”,不是没有做一些编程或向igraph人提交功能请求&#39;

我发布了一个早先的答案,说明了布局功能,但事实并非如此 - 布局功能只定位顶点,绘制边缘是plot.igraph的工作。