bqplot:ipython小部件未呈现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bqplot:ipython小部件未呈现相关的知识,希望对你有一定的参考价值。

我正在尝试使用bqplot在jupyter笔记本中绘制一些图形以及一些ipywidgets。我想在this issue中讨论的时候将小部件水平地渲染到我的情节附近,但我无法让小部件显示在我的jupyter笔记本中。

我的代码如下 -

from bqplot import pyplot as plt
import ipywidgets as widgets
from pandas import DataFrame

class AdderDOEProblem_PlotUtils:
    def __init__(self, parseutils):
        self.data = DataFrame({'timestamps': parseutils.getTimestampValues(),
                            'Adder.sum': parseutils.getValues('Adder.sum'),
                            'Adder.a': parseutils.getValues('desvar_a.a'),
                            'Adder.b': parseutils.getValues('desvar_b.b')})
        # step size
        self.Adder_a__step = 0.1
        self.Adder_b__step = 0.1

        # axes configuration
        x_axis_values = self.data['Adder.a']
        y_axis_values = self.data['Adder.sum']

        self.fig = plt.figure(title='AdderDOEProblem')
        self.p = plt.plot(x_axis_values, y_axis_values)

        w_a_slider = widgets.FloatSlider(value=0, min=0, max=1, step=self.Adder_a__step, description='Adder.a')
        w_b_slider = widgets.FloatSlider(value=0, min=0, max=1, step=self.Adder_b__step, description='Adder.b')
        self.widgets_list = [w_a_slider, w_b_slider]

    def update (self, change):
        # Placeholder logic for testing 
        self.p.y = [i+1 for i in self.p.y]

    def plot (self):
        plt.show()
        for w in self.widgets_list:
            w.observe(self.update, 'value')
        self.update(None)
        widgets.HBox([widgets.VBox(self.widgets_list), self.fig])

当我在笔记本中运行它时,我得到以下输出 -

jupyter notebook output

我按照许多线程中的建议尝试了以下命令(但没有运气) -

jupyter nbextension enable --py widgetsnbextension

我错过了什么?

附:包的版本如下 - jupyter - 1.0.0 ipython - 5.1.0 ipywidgets - 5.2.2 bqplot - 0.8.4

答案

在您的绘图功能中,您必须返回正在创建的HBox。这就是它没有被展示的原因。显示的数字来自plt.show命令,该命令仅显示当前上下文中的Figure。请注意,您不再需要plt.show()了。所以情节函数看起来像,

def plot (self):
    for w in self.widgets_list:
        w.observe(self.update, 'value')
    self.update(None)
    return widgets.HBox([widgets.VBox(self.widgets_list), self.fig])

以上是关于bqplot:ipython小部件未呈现的主要内容,如果未能解决你的问题,请参考以下文章

在Jupyter中更严格的bqplot数字布局

Django ModelMultipleChoiceField 小部件未呈现

Dojo 小部件未正确呈现

AppCompat v22.1.0 没有为片段正确主题化所有 xml 小部件

Ipython Widgets(如何制作计时器)

改进 IPython 小部件中 Pandas DataFrames 的 HTML 样式