2013-01-24 202 views
2

我正在通过Python中的igraph例子,并继续遇到这个问题。igraph去边界框的边缘

Kautz, zealously cropped

最外面的顶点部分外边界框的。 example几乎没有这个问题。如果这是一个简单的解决方法,请让我知道。)如果这是一个简单的解决方案,请让我知道。)在这个例子中,它只是在每一边放一个箭头。

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

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 

我会很感激任何帮助!

回答

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使用透明背景。您可以使用Plot构造函数的background关键字参数来覆盖该值。

+0

非常感谢!这比我收集到的信息要多得多,(这纯粹是运气。) –

+1

Hey @Tamás,有没有可以设置的所有顶点和边属性的编译列表?我一直在寻找这个文件,但无法找到它的任何地方。谢谢! –

+0

'help(Graph .__ plot __)'应该有它们的完整列表。它在“Graph .__ plot__”中的原因是“plot()”只是一个通用的绘图函数,它将绘图的任何对象的'__plot__'方法委托给绘图。 –

3

我发现了a解决方案,经过漫长的一天的文档搜索。什么我现在用的就是

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

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

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

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

graph.es["curved"] = 0 

谢谢大家谁看着这个,我希望我的经验帮助!