Jupyter小部件:如何使用不同的小部件来共享变量的不同功能

问题描述

我想使用小部件进行绘图并与其他文件进行交互。问题在于,我只有一个小部件可以告诉您要绘制的文件,而其他小部件则可以选择图形的选项。我将通过一个简单的示例展示我的工作:

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import ipywidgets as widgets
from IPython.display import display,Math


omega = widgets.FloatSlider(
    value=1,min=1,max=5.0,step=0.1,description='omega:',disabled=False,continuous_update=False,orientation='horizontal',readout=True,readout_format='.1f',)
delta = widgets.FloatSlider(
    value=0,min=0,max=1.0,description='delta:',)
A = widgets.FloatSlider(
    value=1,step=0.5,description='A:',)


y = A.value*np.sin(omega.value*x+delta.value)
print(len(x),len(y))
xlabel = widgets.Text(value='',description='xlabel',continuous_update=False)
ylabel = widgets.Text(value='',description='ylabel',continuous_update=False)

#@widgets.interact(xlabel=xlabel,ylabel=ylabel,x,y)
def plot_data(y,xlabel,ylabel):
    #Plot data rode before
    x = np.linspace(0,2*np.pi,num=1000)
    plt.clf()
    plt.figure()
    plt.xlabel(xlabel)
    plt.ylabel(ylabel)
    plt.plot(x,y)

#@widgets.interact(A=A,omega=omega,delta=delta)
def load_data(A,omega,delta):
    #Read data to plot later
    x = np.linspace(0,num=1000)
    y = A*np.sin(omega*x+delta)
    #f2(x,y,xlabel.value,ylabel.value)
    return y


omega.observe(load_data,'value')
A.observe(load_data,'value')
delta.observe(load_data,'value')


display(omega)
display(A)
display(delta)

widgets.interact(plot_data,y=widgets.fixed(load_data(A.value,omega.value,delta.value)),xlabel=xlabel,ylabel=ylabel)

现在出现错误TypeError: load_data() missing 2 required positional arguments: 'omega' and 'delta'

有什么想法可以解决并使其可行吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)