我正在尝试在 Jupyter Notebook 中进行“实时”绘图。 可以找到示例here .这是代码:
%matplotlib notebook
import numpy as np
import matplotlib.pyplot as pl
from random import randint
from time import sleep
from ipywidgets import FloatProgress
from IPython import display
siz = 10
dat = np.zeros((siz, siz))
fig = pl.figure()
axe = fig.add_subplot(111)
img = axe.imshow(dat)
num = 1000
prgBar = FloatProgress(min=0, max=num-1)
display.display(prgBar)
for i in range(num):
prgBar.value = i
pos = (randint(0, siz-1), randint(0, siz-1))
dat[pos] += 1
img.set_data(dat)
img.autoscale()
#sleep(0.01)
我的目标是查看情节如何随着每次迭代而变化。 我还尝试通过 pl.ion() 设置交互式 mod,将 backent 更改为内联,调用 pl.draw(),但没有一个有效。顺便说一句,进度条工作得很好......
谢谢拉德克
最佳答案
下面的代码应该可以解决这个问题:
import numpy as np
import matplotlib.pyplot as plt
from random import randint
from time import sleep
from ipywidgets import FloatProgress
from IPython.display import display, clear_output
siz = 10
dat = np.zeros((siz, siz))
fig = plt.figure()
axe = fig.add_subplot(111)
img = axe.imshow(dat)
num = 1000
prgBar = FloatProgress(min=0, max=num-1)
display(prgBar)
for i in range(num):
clear_output(wait = True)
prgBar.value = i
pos = (randint(0, siz-1), randint(0, siz-1))
dat[pos] += 1
img.set_data(dat)
img.autoscale()
display(fig)
我更改了在每一步创建图像的 for 循环,还导入了 clear_output
以清理每一步的单元格输出。
关于python - Jupyter Notebook 中的交互式绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36067993/