2014-12-15 29 views
7

napisałem poniższy kod w ipython notebooka do generowania funkcji esicy kontrolowane przez parametry a, która określa położenie środka esicy, a B, który określa jej szerokość:ipython notebook interaktywnych funkcji: jak ustawić zakres suwaka

%matplotlib inline 
    import numpy as np 
    import matplotlib.pyplot as plt 

def sigmoid(x,a,b): 
    #sigmoid function with parameters a = center; b = width 
    s= 1/(1+np.exp(-(x-a)/b)) 
    return 100.0*(s-min(s))/(max(s)-min(s)) # normalize sigmoid to 0-100 

x = np.linspace(0,10,256) 
sigm = sigmoid(x, a=5, b=1) 
fig = plt.figure(figsize=(24,6)) 
ax1 = fig.add_subplot(2, 1, 1) 
ax1.set_xticks([]) 
ax1.set_xticks([]) 
plt.plot(x,sigm,lw=2,color='black') 
plt.xlim(x.min(), x.max()) 

chciałem dodać interaktywność do parametrami aib więc ponownie napisał funkcję jak poniżej:

%matplotlib inline 
import numpy as np 
import matplotlib.pyplot as plt 
from IPython.html.widgets import interactive 
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 
    fig = plt.figure(figsize=(24,6)) 
    ax1 = fig.add_subplot(2, 1, 1) 
    ax1.set_xticks([]) 
    ax1.set_yticks([]) 
    plt.plot(x,sn,lw=2,color='black') 
    plt.xlim(x.min(), x.max()) 

w=widgets.interactive(sigmoid_demo,a=5,b=1) 
display(w) 

Czy istnieje jakiś sposób, aby se zakres suwaków być symetryczny (na przykład wokół zera)? Nie wydaje mi się to możliwe, po prostu ustawiając wartość początkową dla parametrów.

Odpowiedz

5

Możesz tworzyć widżety ręcznie i wiązać je ze zmiennymi w funkcji interactive. W ten sposób będziesz bardziej elastyczny i dostosujesz te widgety do swoich potrzeb.

Ten przykład tworzy dwa różne suwaki i ustawia ich maks., Min.

a_slider = widgets.IntSliderWidget(min=-5, max=5, step=1, value=0) 
b_slider = widgets.FloatSliderWidget(min=-5, max=5, step=0.3, value=0) 
w=widgets.interactive(sigmoid_demo,a=a_slider,b=b_slider) 
display(w) 
+0

Dzięki. Prawdopodobnie powinienem uczynić tę drugą część osobnym pytaniem, więc mógłbym wybrać twój jako odpowiedź dla zakresu. – MyCarta

+0

@MyCarta, zobacz moją edycję - czy to pomaga? – cel

+0

To, czego szukam, to sposób na przywracanie wartości parametrów aib b dynamicznie, ponieważ są one modifeid przez suwaki. Zdecydowanie teraz osobne pytanie, które o tym myślę. – MyCarta