igraph进入边界框的边缘

时间:2013-01-24 14:58:05

标签: python igraph

我正在浏览python中的igraph示例,并且一直遇到这个问题。

Kautz, zealously cropped

最外面的顶点部分位于边界框之外。 example几乎没有这个问题。

(另外,在我看来,它似乎是为双向连接画出了额外的线条,而在这个例子中,它只是在每一侧都放了一个箭头。如果这是一个简单的修复,请告诉我。)< / p>

从示例页面复制的代码如下所示。

g = Graph.Kautz(m=3, n=2)
adj = g.get_adjacency()
fig.add(g, layout="fr", vertex_label=None)
fig.add(adj, bbox=(360, 0, 480, 120), grid_width=0, opacity=0.7)
fig.show()

我的安装详情在这里。

No configuration file, using defaults
igraph 0.6 running inside Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
[GCC 4.6.3] on linux2

我非常感谢你的帮助!

2 个答案:

答案 0 :(得分:6)

曲线边缘被引入到igraph的图形抽屉中,而不是在文档中创建该图形的时间,这就是为什么你没有看到文档图中的弯曲边缘。无论如何,弯曲的边缘很容易被禁用:

graph.es["curved"] = False

plot(graph, edge_curved=False)

对于不适合边界框的边缘:plot()函数(这是快速绘图的一次性函数)有一个margin关键字参数,可以设置一个白色边距图形图;这基本上是通过将图形的边界框与给定数量的像素收缩来完成的,以确保边缘保持在内部(大部分时间)。当您通过直接使用plot类构建自己的绘图时,您必须自己添加边距:

bbox = BoundingBox(600, 600)
figure = Plot(bbox=bbox)
bbox = bbox.contract(20)
figure.add(graph, bbox=bbox, layout=layout)
figure.show()

内置plot函数与Plot类之间的另一个区别是plot函数默认添加白色背景,而Plot使用透明背景。您可以使用background构造函数的Plot关键字参数覆盖它。

答案 1 :(得分:3)

经过漫长的文档搜索后,我发现了 解决方案。我现在使用的是

graph.layout().fit_into(bbox=(<size>, <size>))

而不是使用igraph.Plot()和plot.add(graph),

igraph.plot(graph, bbox=(<size>, <size>))

另外,我用弯曲的边缘解决了我的问题。

graph.es["curved"] = 0

谢谢,所有看过这个的人,我希望我的经验有所帮助!