如何在Jupyter Notebook上迭代绘制图形

时间:2019-05-28 18:40:23

标签: python matplotlib graph jupyter-notebook networkx

我正在使用增量图,因此,每当我在上一张图的顶部插入新边时,我都希望绘制当前图。

使用此代码,我一次只能生成一个图形,但是它们仅在迭代结束后才会显示。

import random
import time
import networkx as nx
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
%matplotlib notebook

#Generating some random edges
M = 10
N = 4
edges = []
for i in range(M):
    s = random.randrange(N) + 1
    t = random.randrange(N) + 1
    edges.append((s,t))

G = nx.DiGraph()
G.add_nodes_from(range(1, 5))

plt.subplot(121)
plt.ion()

nx.draw(G, with_labels=True, font_weight='bold')

for edge in edges:
    plt.figure()
    G.add_edge(*edge)
    nx.draw(G, with_labels=True, font_weight='bold')
    time.sleep(1)

但是我真正想要的是看到在每次迭代中重绘图形,或者至少能够使用Matplotlib的交互模式将它们堆叠起来,以便我可以前进和后退。

我一直在搜索几天,发现了一些处理条形图,饼图等图形的示例,但是我指的图形是数据结构,而不是图表。

1 个答案:

答案 0 :(得分:3)

以下是使用import copy sequences = ["A","B","A","A","B"] lista = copy.copy(sequences) lista.pop(0) print(lista) # prints ["B","A","A","B"] mc = list() for x in range(len(lista)): mc.append(lista[x] + sequences[x + 1]) 的建议,它大大简化了在FuncAnimation中创建动画/实时图形的整个过程

matplotlib

enter image description here