修改 IPython 笔记本 "interact" 中的线/图

Modify line / plot in IPython notebook "interact"

有没有办法修改 IPython "interact" 函数中的绘图而不是重新绘制它?

如果绘图包含大量繁重的图形(或某些部分需要大量计算),这比从头开始绘图要快得多。

我正在尝试以下代码,但它不起作用:更改滑块后整个图变为空白。

%matplotlib inline
import matplotlib.pyplot as plt
from IPython.html.widgets import interact
import numpy as np

x = np.arange(0,11.)
y1 = x / 10.
y2 = np.random.rand(len(x))

plt.plot(x,y1)
plt.plot(x,y2)

plt.ylim([0,1])
ax = plt.gca()

def replot_it(a):
    ax.lines.pop(1)

    y = (x/10.)**a
    ax.plot(x,y)

interact(replot_it, a=(0.,5.))

如有任何建议,我将不胜感激。

如果 IPython > 3.0 且 mpl > 1.4:运行 这是一个单元格:

%matplotlib notebook
import matplotlib.pyplot as plt
from IPython.html.widgets import interact
import numpy as np

x = np.arange(0,11.)
y1 = x / 10.
y2 = np.random.rand(len(x))
fig, ax = plt.subplots()
ln1, = ax.plot(x,y1)
ln2, = ax.plot(x,y2)

ax.set_ylim([0,1])


def replot_it(a):
    y = (x/10.)**a
    ln2.set_ydata(y)
    ax.figure.canvas.draw()

interact(replot_it, a=(0.,5.))

在它下面的单元格中。