网络演化模拟

来自集智百科
跳转到: 导航搜索

模型

要可视化一个演化过程,其实只需要将一个网络演化过程实现,然后把每一步绘制出来,最后连续地播放这些画面就可以。以下这段代码先利用networkx生成一个随机网络,接着随机添加节点。然后在matplotlib的绘画板上不停地绘制-关闭。实现了最基本的演化模拟,但过渡不够光滑,最好是先生成一堆png图,然后用magictrick等工具将这堆图组合成gif或者mp4。

技术实现

    import random
    import pylab
    from matplotlib.pyplot import pause
    import networkx as nx
 
    pylab.ion()
    graph = nx.Graph()
    node_number = 0
    graph.add_node(node_number, Position=(random.randrange(0, 100), random.randrange(0, 100)))
 
    def get_fig():
        global node_number
        node_number += 1
        graph.add_node(node_number, Position=(random.randrange(0, 100), random.randrange(0, 100)))
        graph.add_edge(node_number, random.choice(graph.nodes()))
        fig = pylab.figure()
        nx.draw(graph, pos=nx.get_node_attributes(graph,'Position'))
        return fig
 
    num_plots = 50;
    pylab.show()
    for i in range(num_plots):
        fig = get_fig()
        fig.canvas.draw()
        pylab.draw()
        pause(0.1)
        pylab.close(fig)
个人工具
名字空间
操作
导航
工具箱