python - Jupyter Notebook 中的交互式绘图

标签 python matplotlib real-time interactive jupyter

我正在尝试在 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/

相关文章:

python - 防止 x 轴标签在 matplotlib/pyplot 中被截断

real-time - 如何使用freertos实时发送数据

python - UDF 中的 Pyspark 和局部变量

python - Matplotlib 线框显示奇怪的接线

python - 如何为 N 个骰子生成 "Go First"骰子?

python - matplotlib plt.show() 预索引空 numpy 数组时出现视觉故障

go - 带有Websocket和Redis的多房间聊天应用程序

javascript - Pusher 在点击时触发所有订阅者的事件

python - 如何使用 Crontab 在 Django 环境中运行 Python 文件?

python - Pandas 最大值指数