微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。