在交互式ipywidgets中排列小部件

Ber*_*ter 4 interactive python-3.x jupyter-notebook ipywidgets

我有使用ipywidgets的交互式图形代码;但不确定如何在小部件中的交互式函数中延迟每个变量。默认布局为垂直。但我想将它们水平排列。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.style.use('seaborn')
%config InlineBackend.figure_format = 'svg'
from ipywidgets import interactive,interact
#function to plot the different curves
def plot_function(u=1,v=2,w=3,x=4,y=5,z=6):
    time=np.arange(0,1,0.01)
    df=pd.DataFrame({"Y1":np.sin(time*u*2*np.pi),"y2":np.sin(time*v*2*np.pi),"y3":np.sin(time*w*2*np.pi),
                    "y4":np.sin(time*x*2*np.pi),"y5":np.sin(time*y*2*np.pi),"y6":np.sin(time*z*2*np.pi)})
    df.plot()
widget=interactive(plot_function,u=1,v=2,w=3,x=4,y=5,z=6)
widget
Run Code Online (Sandbox Code Playgroud)

输出量

ac2*_*c24 7

interactive仅限于相当简单的小部件布局。如果要自定义更多选项,请查看Flexbox选项。

一种简单的解决方法是使用该interactive调用来生成并链接您的小部件和函数,然后在HBox内重组小部件。然后添加一个告诉框在行尾换行的布局。我添加了几个导入,最后添加了三行来实现此目的。

1)controls- HBox您的输入小部件之一。

2)调用Output生成的小部件interactive

3)VBox将两者包装在一起的A。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.style.use('seaborn')
%config InlineBackend.figure_format = 'svg'
#importing the necessary items from the Ipywidgets library 
from ipywidgets import interactive,interact, HBox, Layout,VBox
#function to plot the different curves
def plot_function(u=1,v=2,w=3,x=4,y=5,z=6):
    time=np.arange(0,1,0.01)
    df=pd.DataFrame({"Y1":np.sin(time*u*2*np.pi),"y2":np.sin(time*v*2*np.pi),"y3":np.sin(time*w*2*np.pi),
                    "y4":np.sin(time*x*2*np.pi),"y5":np.sin(time*y*2*np.pi),"y6":np.sin(time*z*2*np.pi)})
    df.plot()
widget=interactive(plot_function,u=1,v=2,w=3,x=4,y=5,z=6)
controls = HBox(widget.children[:-1], layout = Layout(flex_flow='row wrap'))
output = widget.children[-1]
display(VBox([controls, output]))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明