如何使用用户在Juypter中使用ipywidgets UI控件设置的值以交互方式更新乳胶方程式?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用用户在Juypter中使用ipywidgets UI控件设置的值以交互方式更新乳胶方程式?相关的知识,希望对你有一定的参考价值。

我正在尝试使用Jupyter Notebook中的ipywidgets FloatBox输入控件的值来显示多线方程。我想能够在Floatbox控件更新时或者当用户按下按钮更新等式时更新方程式。

首先,我可以使用Markdown函数在代码框中显示等式:

x=3
y=4
Markdown("""
$$
\begin{{align}}
\begin{{split}}
z & =x \times y \\
 & = {x} \times {y} \\
 & = {z}
end{{split}}
end{{align}}
$$
""".format(x=x,y=y,z=x*y))

我还可以按照ipywidgets readthedocs上的说明从滑块中获取输入并将其输出为纯文本而不是等式:

a = widgets.IntSlider(description='a')
b = widgets.IntSlider(description='b')
c = widgets.IntSlider(description='c')

def f(a, b, c):
    print('{}*{}*{}={}'.format(a, b, c, a*b*c))

out = widgets.interactive_output(f, {'a': a, 'b': b, 'c': c})

widgets.HBox([widgets.VBox([a, b, c]), out])

但是,当将两者放在一起时,Markdown或者只显示Markdown的字符串表示而不是渲染本身('<IPython.core.display.Markdown object>')或者根本不显示(如果我没有在打印语句中包含Markdown命令) )。

这是两者结合在一起 - 我使用了一个比上面所示更简单的方程式。

Markdown('$${}\times{}\times{}={}$$'.format(a.value, b.value, c.value, a.value*b.value*c.value)) #outputs fine

a = widgets.IntSlider(description='a')
b = widgets.IntSlider(description='b')
c = widgets.IntSlider(description='c')


def f(a, b, c):
    print('{}*{}*{}={}'.format(a, b, c, a*b*c))

def f2(a, b, c):
   print(Markdown('${}\times{}\times{}={}$'.format(a, b, c, a*b*c)))

out = widgets.interactive_output(f2, {'a': a, 'b': b, 'c': c})

widgets.HBox([widgets.VBox([a, b, c]), out]) #no output.

有任何想法吗?

答案

以下似乎工作 - 我认为它只需要添加'display'命令:

from IPython.display import display

a = widgets.IntSlider(description='a')
b = widgets.IntSlider(description='b')
c = widgets.IntSlider(description='c')


def f(a, b, c):
    print('{}*{}*{}={}'.format(a, b, c, a*b*c))

def f2(a, b, c):
   print(Markdown('${}\times{}\times{}={}$'.format(a, b, c, a*b*c)))

def f3(a, b, c):
   display(Markdown('${}\times{}\times{}={}$'.format(a, b, c, a*b*c)))
out = widgets.interactive_output(f3, {'a': a, 'b': b, 'c': c})

widgets.HBox([widgets.VBox([a, b, c]), out])

以上是关于如何使用用户在Juypter中使用ipywidgets UI控件设置的值以交互方式更新乳胶方程式?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 jupyter 笔记本创建业务就绪报告?

E2EIntel AI DevCloud 的申请和登陆

测试编辑

anaconda 中spyder打开

从 PySpark 中的选定列和行中提取值

如何在高级自定义字段插件中使用用户字段类型显示用户名