igraph到达边界框的最边缘
我在用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
如果能得到任何帮助,我会非常感激!
2 个回答
3
经过一天的文档搜索,我终于找到了一个解决方案。现在我用的是
graph.layout().fit_into(bbox=(<size>, <size>))
而不是使用 igraph.Plot() 和 plot.add(graph),
igraph.plot(graph, bbox=(<size>, <size>))
另外,我还解决了关于曲线边的问题。
graph.es["curved"] = 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
则使用透明背景。你可以通过使用Plot
构造函数的background
参数来覆盖这个设置。