修改 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.))
在它下面的单元格中。
有没有办法修改 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.))
在它下面的单元格中。