根据交互式参数值存储函数的输出

时间:2018-11-19 17:37:00

标签: python interactive ipywidgets holoviews

我想做的是以下几点。我有一些函数f(m),我想以交互方式探索m的不同值(例如,使用ipywidgets)。对于m的特定值,我想在列表中存储一些包含例如m的字符串。但是,我事先不知道这些值是什么。我想绘制f(m),如果我喜欢结果,则选择True或False之类的东西,或者从下拉列表中选择Reject或Approve,然后才存储该值。在键盘上单击A或R也可以。这是我能做的吗?我能想到的最好的方法是使用像ipywidgets这样的东西:

%matplotlib inline
from ipywidgets import interactive
import matplotlib.pyplot as plt
import numpy as np

def f(m):
    plt.figure(2)
    x = np.linspace(-10, 10, num=1000)
    ID = str(m)
    plt.plot(x, m * x)
    plt.ylim(-5, 5)
    plt.show()

interactive_plot = interactive(f, m=(-2.0, 2.0))
output = interactive_plot.children[-1]
output.layout.height = '350px'
interactive_plot

在这种情况下,ID是我要存储的对象。我可以添加一个额外的参数evaluation,它可以是AcceptReject或类似的东西,并在函数中添加一个if语句以附加一个值列表,但这看起来像一个糟糕的选择。因为更改m不会更改评估的值,所以只要将evaluation设置为Accept,则更改m只会将ID添加到每m个列表中。因此,对于每个值,我需要将evaluation设置为AcceptReject,然后将其重新设置为某个值,该值不会执行Undetermined这样的操作,这是很多点击。我相信会有更好的方法。有人可以指出我的方向吗?

1 个答案:

答案 0 :(得分:0)

此示例可能对您而言有些矫kill过正,但是它显示了如何使用Panel(panel.pyviz.org)将一组当前选定的小部件值(在这种情况下,保存到文件中)保存:https://anaconda.org/jbednar/datashaderattractors/notebook