我正在浏览python中的igraph示例,并且一直遇到这个问题。
最外面的顶点部分位于边界框之外。 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
我非常感谢你的帮助!
答案 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
谢谢,所有看过这个的人,我希望我的经验有所帮助!