gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:19:19 26 4
gpt4 key购买 nike

我正在处理增量图,所以每次我在上一张图的顶部插入一条新边时,我都想绘制当前图。

使用这段代码,我可以一次生成一个图形,但它们只会在迭代结束后显示。

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 的交互模式将它们堆叠起来,这样我就可以前进和后退。

我搜索了好几天,找到了一些使用条形图、饼图等图形的示例,但我指的图形是数据结构,而不是图表。

最佳答案

这里建议使用FuncAnimation,它大大简化了在matplotlib中创建动画/实时图形的整个过程

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))

fig = plt.figure()
ax = plt.subplot(121)

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

def update(edge):
G.add_edge(*edge)
nx.draw(G, with_labels=True, font_weight='bold')

ani = animation.FuncAnimation(fig, update, frames=edges, interval=1000., init_func=init, repeat=False)

enter image description here

关于python - 如何在 Jupyter Notebook 上迭代绘制图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56348302/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com