Python 小部件 - 这个情节是如何制作的?

Python Widget - How made this plot?

我知道如果我想要 plot/print 小部件的东西,我应该使用以下代码:

interact(function,variable=(1,3))

现在我遇到了一个问题。是否可以创建一个具有两个数组作为输入的小部件?例如,考虑以下情况:

a= np.linspace(1,2,100)
b= np.linspace(3,4,100)

是否可以看到具有两个不同数组的函数的行为(例如,从区间 a 切换到区间 b)? 下面我已经尝试了一些,但是它不起作用..

import numpy as np
import matplotlib.pyplot as plt
from __future__ import print_function
from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets
a= np.linspace(1,2,100)
b= np.linspace(3,4,100)
def test(array,constant):
    f = []
    for x in array:
        f.append(x**2+constant*x)
    plt.plot(f)
    plt.show()
    return f
interact(test,array=(a,b),constant=(1,5))

您可以尝试这样的操作:

import numpy as np
import matplotlib.pyplot as plt
from __future__ import print_function
from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets


xs = {"a": np.linspace(1, 2, 100), "b": np.linspace(3, 4, 100)}

def test(constant, array):

    x = xs[array] 
    f = x**2*constant*x
    plt.plot(x, f)
    plt.show()

interact(test, array=xs.keys(), constant=(1,5))

它将创建一个带有滑块的小部件来控制 constant 值和一个下拉菜单到 select 两个数组之一。