Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用什么工具绘制动画网络图_Python_Graph_Networkx - Fatal编程技术网

Python 使用什么工具绘制动画网络图

Python 使用什么工具绘制动画网络图,python,graph,networkx,Python,Graph,Networkx,我想获得一个复杂图形上随机行走概率分布的动画。我目前使用Python和用于操纵图形和评估行走的动力学 我的目标是制作一个动画,比如说一个GIF文件,其中图形的每个节点的大小与其程度或其他拓扑属性成比例,颜色与标量属性(概率分布)成比例。 节点的大小和位置在时间上保持不变,但颜色会发生变化 目前,我可以使用在某个时刻绘制具有所需属性的图形,但我想知道如何制作动画,或者如何自动生成每个时刻的图像 有人能指出在哪些地方做过类似的事情吗?除了Gephi,我还可以使用不同的可视化工具。实际上,我希望所有的

我想获得一个复杂图形上随机行走概率分布的动画。我目前使用Python和用于操纵图形和评估行走的动力学

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

目前,我可以使用在某个时刻绘制具有所需属性的图形,但我想知道如何制作动画,或者如何自动生成每个时刻的图像


有人能指出在哪些地方做过类似的事情吗?除了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)

FWIW:这里有一个例子,我使用FuncAnimation创建了一个动画:非常感谢你的鼓舞人心的回答。不过,我很难让布告生效。请您进一步解释node.set_数组步骤好吗?我必须重新绘制,即调用nx.draw_networkx_节点。@jmon12我不确定您的问题是什么。我建议打开一个新的问题,参考这个答案,并更详细地解释什么对你不起作用。我可以解决我的问题,它本身不值得一个问题。在我的案例中,我使用了更具体的nodes.set_facecolor解决了我的问题。我唯一的改进建议是解释set_数组的作用以及为什么使用它而不是直接设置颜色。