重用随机python-igraph布局的结果用于未来的绘图

时间:2018-03-29 10:43:56

标签: python layout igraph

我可以使用kk布局成功绘制一个漂亮的网络。不幸的是,由于kk是随机布局,每次绘制它时它看起来都不同。

有没有办法用相同的顶点和节点排列绘制两次但是改变视觉风格?我想通过更改顶点颜色并并排显示两个图来可视化更改。当然,将来我可能也有兴趣修改边缘,但现在这不是问题。

对于我的程序的每次运行布局都会发生变化这一事实我完全没问题,它应该在一次运行中一致地绘制它。

如果保存生成的SVG,我可以将其绘制两次,但当然对底层图形进行修改会比调整原始SVG更优雅。

这绘制了两次相同的布局,但仅作为SVG:

s = cairo.SVGSurface(None, 800, 800)
model = ig.plot(g, **visual_style,
    vertex_label=[label_for_title(vertex[1]['title']) for vertex in enumerate(g.vs)],
    edge_color=[color_for_rating(edge[1]['rating']) for edge in enumerate(g.es)],
    target=s,
    mark_groups=action_systems)._repr_svg_()

display(SVG(model))
display(SVG(model))

1 个答案:

答案 0 :(得分:0)

是的,有,因为igraph允许您将顶点的布局存储为对象:my_layout = g.layout('kk')

因此,您可以使用相同的布局多次绘制图形g:

my_layout = g.layout('kk')
igraph.plot(g,layout=my_layout)
#now change g and/or the visual style
g.delete_edges([0,3,4])
igraph.plot(g,layout=my_layout,vertex_color=['blue' for _ in g.vs])

新绘制的图形将具有相同的顶点位置,但现在一些边缘将消失,所有顶点将自然为蓝色。