使用ipywidgets的交互式matplotlib

Yas*_*Yas 11 python matplotlib ipython jupyter-notebook ipywidgets

我想在IPython(python3)中使用Matplotlibipywidgets实现交互式绘图.那么,我如何才能有效地做到这一点(顺利改变,没有延迟)?

另一个问题是为什么这段代码有效?!

from ipywidgets import *
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

x = np.linspace(0, 2 * np.pi)

def update(w = 1.0):
    fig = plt.figure()
    ax = fig.add_subplot(1, 1, 1)
    ax.plot(x, np.sin(w * x))

    fig.canvas.draw()

interact(update);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

但是,这不起作用?!

from ipywidgets import *
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

x = np.linspace(0, 2 * np.pi)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
line, = ax.plot(x, np.sin(x))

def update(w = 1.0):
    line.set_ydata(np.sin(w * x))
    fig.canvas.draw()

interact(update);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Qua*_*ant 7

第二种方法适合笔记本后端

%matplotlib notebook
Run Code Online (Sandbox Code Playgroud)

或者用ipympl。

但是,它不适用于不更新绘图的内联后端。

  • 对我来说,第二种方法不适用于笔记本后端。根本没有显示图表。 (2认同)
  • 此外,为了显示画布,`fig.show()` 是必要的。 (2认同)