2

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

考茨,热心地剪裁

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

(另外,在我看来,它似乎为双向连接绘制了额外的线,而在示例中,它只是在每一侧放置一个箭头。如果这是一个简单的修复,请告诉我。)

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

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

我将非常感谢任何帮助!

4

2 回答 2

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

于 2013-01-25T21:54:29.787 回答
3

经过一整天的文档搜索,我发现了一个解决方案。我现在使用的是

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

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

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

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

graph.es["curved"] = 0

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

于 2013-01-25T03:51:49.050 回答