gpt4 book ai didi

python - IPython笔记本交互函数: how to set the slider range

转载 作者:太空狗 更新时间:2023-10-29 21:46:14 27 4
gpt4 key购买 nike

我在 Ipython notebook 中编写了下面的代码来生成一个由参数 a 控制的 sigmoid 函数,a 定义了 sigmoid 中心的位置,b 定义了它的宽度:

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

我想为参数 a 和 b 添加交互性,所以我重新编写了函数如下:

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

有什么方法可以将 slider 的范围设为对称(例如在零附近)?在我看来,仅通过设置参数的起始值是不可能的。

最佳答案

您可以手动创建小部件并将它们绑定(bind)到 interactive 函数中的变量。这样您就更加灵活,可以根据您的需要定制这些小部件。

此示例创建两个不同的 slider 并设置它们的最大值、最小值、步长和初始值,并在 interactive 函数中使用它们。

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)

关于python - IPython笔记本交互函数: how to set the slider range,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27489742/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com