Jupyter Ipywidgets在显示和刷新时表现不一致

时间:2017-08-09 16:27:20

标签: python-2.7 pandas jupyter-notebook bokeh ipywidgets

我制作了一个显示一些图表和数据帧的jupyter笔记本。然后,我可以更改窗口小部件值以刷新数据框和图形。

我遇到了两个问题:

  1. 每次我打开Jupyter笔记本后第一次运行这本书时,我都明白了:
  2. enter image description here

    然而,当我再次运行所有细胞时,我得到了所需的输出:

    enter image description here

    1. 每次我使用小部件并进行更改时,笔记本最终会正确刷新,但由于某种原因,它会不断输出前几个图形,似乎清除输出,然后再次显示它们,然后清除输出,经过几次迭代后,能够显示一切。这是我的事件处理程序:

      def handle_submit(sender):
          clear_output(wait=True)
      
          start = w.slider_start.value.strftime('%Y-%m-%d')
          end = w.slider_end.value.strftime('%Y-%m-%d')
      
          zval = z.value
          yval = y.value
          xval = x.value
      
          df_dlm,df_dgo,df_stats = show_stats(zval,yval,xval,start,end)
          df_e = show_stats_exp(zval,yval,xval,start,end)
      
          display_dataframe(df_stats)
          plot_lines_e(df_e)
          dfx = prepare_data(df_dlm,df_dgo)
          plot_lines(dfx)
          plot_scatter(dfx)
      
    2. 其中display_dataframeplot_linesplot_scatter函数都有"显示"在它们中键入一行来实际显示图形,因为%matplotlib inline与ipywidgets不相符...感觉就像它与它有关,但不知道如何解决这个问题。

      仅供参考,图表在Bokeh中完成,某些数据帧在matplotlib对象上绘制。

      感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

这个警告只是一个错误,应该在我相信的下一个版本的ipywidgets中修复。与此同时,你唯一能做的就是在加载或重装笔记本后等待~10-20秒,右下角出现“可信”框,如下图所示; enter image description here

只有在看到该框出现后才尝试执行所有代码。