2017-02-09 96 views
1

我想用bqplot來繪製jupyter筆記本中的一些圖形以及一些ipywidgets。我想要將這些小部件水平放置在我的情節的水平附近,如this issue中所討論的,但我無法將小部件顯示在我的jupyter筆記本中。bqplot:不顯示ipython小部件

我的代碼如下 -

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 

我錯過了什麼?

P.S.是包的版本如下 -
jupyter - 1.0.0
IPython中 - 5.1.0
ipywidgets - 5.2.2
bqplot - 0.8.4

回答

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]) 
+0

謝謝,成功了! :) –