2015-05-27 3 views
0

Есть ли способ изменить сюжет внутри IPython «взаимодействовать», а не переустанавливать его?Изменить строку/график в ноутбуке IPython «взаимодействовать»

В случае, если участок содержит много тяжелой графики (или некоторые детали требуют больших вычислений), это будет намного быстрее, чем выполнение графика с нуля.

Я пробую следующий код, но он не работает: после смены ползунка весь участок становится пустым.

%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.)) 

Буду признателен за любые предложения.

ответ

1

Если у вас есть 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.)) 

в камере под ним.

+0

Отлично, спасибо большое! – Vladimir

Смежные вопросы