我想为图形上的过程设置动画(最好是在NetworkX中).我已经看过this question.但是,当我运行解决方案中给出的代码时,我只看到最终输出.另外,这不会以某些可用格式保存动画.
假设我们有以下图形:
import networkx as nx
g = nx.Graph()
g.add_edges_from([(1, 2), (2, 3), (1, 3), (1, 4), (3, 4), (4, 5), (5, 9), (4, 9)])
另外,我们有一组初始节点,我们将其称为活动节点:
active = {1, 3}
直观地,我想做的是为每个活动节点创建动画,以使图中的其他节点及时变为活动状态.因此,如果我们假设一个模型,如果每个节点的至少两个邻居变为活动状态,则每个节点都会活动,那么在第二次迭代中,活动节点集将为:
active = {1, 3, 2, 4}
在下一次迭代中,活动节点集将为:
active = {1, 3, 2, 4, 5}.
在最后的迭代中,图中的所有节点将变为活动状态:
active = {1, 3, 2, 4, 5, 9}
此过程称为打翻过程,是网络中信息传播的一个示例.您可以在下面看到该算法的非常简单的实现.
def tipping(graph, seed_set, thr=2):
active = seed_set
has_changed = False
for n in filter(lambda n: n not in active, graph.nodes()):
if len(filter(lambda nei: nei in active, graph.neighbors(n))) >= thr:
active.add(n)
has_changed = True
if has_changed:
return tipping(graph, active, thr) | active
return active
我想知道是否有任何方法可以可视化此过程.我知道我可以使用networkX中的nx.draw()函数绘制网络.但是,在这种情况下,我还没有看到产生动画的任何函数或任何其他有用的输出.
一种可能的解决方案是在过程的每个步骤中以不同的节点颜色绘制图形,保存每种颜色,并使用所有保存的图片制作gif动画.
如何使用Networkx设置扩散动画?动画最好在IPython笔记本中运行.