Każdy przykład widziałem korzystania widżety dla interaktywnych wykresów matplotlib w notebooku zrobić coś takiego (dostosowany od here):Czy można przyspieszyć interaktywne wątki IPython Notebook, nie generując nowych danych za każdym razem?
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
from IPython.html.widgets import interact
from IPython.display import display
def sigmoid_demo(a=5,b=1):
x = np.linspace(0,10,256)
s = 1/(1+np.exp(-(x-a)/(b+0.1))) # +0.1 to avoid dividing by 0
sn = 100.0*(s-min(s))/(max(s)-min(s)) # normalize sigmoid to 0-100
# Does this have to be in this function?
fig, ax = plt.subplots(figsize=(24,6))
ax.set_xticks([])
ax.set_yticks([])
plt.plot(x,sn,lw=2,color='black')
plt.xlim(x.min(), x.max())
w=interact(sigmoid_demo,a=5,b=1)
Podejrzewam, że reaktywność działki może zostać przyspieszony, jeśli was ogromnie nie trzeba było tworzyć zupełnie nowej figury z plt.subplots()
lub plt.figure()
za każdym razem, gdy widget został dostosowany.
Próbowałem kilku rzeczy, aby przenieść tworzenie figur poza funkcją wywoływaną przez interact()
, ale nic nie zadziałało.
użycie '% matplotlib notebook' a następnie można zmutować swoje osie/obiekty artysty i ponowne losowanie. – tacaswell