绘制动画网络图的工具是什么

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了绘制动画网络图的工具是什么相关的知识,希望对你有一定的参考价值。

我想获得一个复杂图形上随机游走概率分布的动画。我目前使用Python和NetworkX来操作图形和评估步行的动态。

我的目标是拥有一个动画(比如一个GIF文件),其中图形的每个节点的大小与其度(或其他拓扑属性)成比例,并且颜色与标量属性(概率分布)成比例。节点的大小和位置在时间上保持固定,但颜色会发生变化。

目前,我能够使用Gephi在特定时刻绘制具有所需属性的图形,但我想知道如何进行动画,或者如何自动生成每个时刻生成图像的过程。

有人可以指出一些类似的东西的参考吗?我还可以使用除Gephi之外的其他可视化工具。实际上,理想情况下,我可以在Python中使用我的所有工作流而无需借助外部程序。

答案

使用matplotlib中的FuncAnimation相当简单:

import numpy as np
import matplotlib.pyplot as plt; plt.close('all')
import networkx as nx
from matplotlib.animation import FuncAnimation

def animate_nodes(G, node_colors, pos=None, *args, **kwargs):

    # define graph layout if None given
    if pos is None:
        pos = nx.spring_layout(G)

    # draw graph
    nodes = nx.draw_networkx_nodes(G, pos, *args, **kwargs)
    edges = nx.draw_networkx_edges(G, pos, *args, **kwargs)
    plt.axis('off')

    def update(ii):
        # nodes are just markers returned by plt.scatter;
        # node color can hence be changed in the same way like marker colors
        nodes.set_array(node_colors[ii])
        return nodes,

    fig = plt.gcf()
    animation = FuncAnimation(fig, update, interval=50, frames=len(node_colors), blit=True)
    return animation

total_nodes = 10
graph = nx.complete_graph(total_nodes)
time_steps = 20
node_colors = np.random.randint(0, 100, size=(time_steps, total_nodes))

animation = animate_nodes(graph, node_colors)
animation.save('test.gif', writer='imagemagick', savefig_kwargs={'facecolor':'white'}, fps=0.5)

enter image description here

以上是关于绘制动画网络图的工具是什么的主要内容,如果未能解决你的问题,请参考以下文章

深度学习网络结构图绘制工具及方法

深度学习网络结构图绘制工具及方法

深度学习网络结构图绘制工具及方法

Python数模笔记-NetworkX图的操作

为啥在原理图绘制过程中要使用网络标号和总线?在啥情况下适合采用总线连接?

为啥在原理图绘制过程中要使用网络标号和总线?在啥情况下适合采用部线连接?