ipywidgets无法与kwargs一起正常使用

时间:2018-08-14 09:32:26

标签: python dataframe plot

我正在编程一个工具来绘制数据并希望使用ipywidgets更改对图形有影响的多个常数(相当复杂的方程)。小部件的数量是任意的。

但是当我将@interact**kwargs一起使用时,更改仅在我更改最后一个滑块时出现(所有常数都具有相同的值)。

def plot_with_widgets(self,
                      constants=[
                          ("slider", "cash.cash", 0, 10),
                          ("checkbox", "earnings.earnings", 0, 10),
                      ]):
    scenarios = get_scenario_objects(...)

    ## Only store data and create widgets and pack them
    log("[INFO] Creating widget objects for interactive plot of scenarios {}".format(str(scenario_names)))

    # Generate the widget objects
    widgets = {}
    for val in constants:
        widget_type = val[0]
        name = val[1]

        if widget_type.lower() == "checkbox":
            widget = py_widgets.Checkbox(description=name, value=False, disabled=False,
                                         style=config.configuration["slider_style"],
                                         layout=config.configuration["slider_layout"])

        elif widget_type.lower() == "slider":
            start = val[2]
            end = val[3]

            if type(start) == float:

                widget = py_widgets.FloatSlider(min=start, max=end, value=(end - start) / 2, description=name,
                                                style=config.configuration["slider_style"],
                                                layout=config.configuration["slider_layout"])
            else:
                widget = py_widgets.IntSlider(min=start, max=end, step=1, value=(end - start) / 2, description=name,
                                              style=config.configuration["slider_style"],
                                              layout=config.configuration["slider_layout"])
        widgets[name] = widget


    @interact(**widgets)
    def make_plot(**kwargs):
        for key, value in kwargs.items():
            scenarios[key].model.somevalue = lambda t : value

        call_plot_method(...)

所以发生的是该绘图(使用dataframe.plot())将进行绘图,但是我更改的模型的所有常数将仅采用小部件dict中最后一个元素的值。

你们中有人有使用matplotlib并将**kwargs用于@interact的经验吗?

0 个答案:

没有答案