Jupyter Ipywidgets 在显示和刷新时行为不一致
Posted
技术标签:
【中文标题】Jupyter Ipywidgets 在显示和刷新时行为不一致【英文标题】:Jupyter Ipywidgets behave Inconsistently when displaying and refreshing 【发布时间】:2018-01-17 15:53:26 【问题描述】:我制作了一个显示一些图表和数据框的 jupyter 笔记本。然后我可以更改小部件值以刷新数据框和图表。
我遇到了两个问题:
-
每次我在打开 Jupyter notebook 后第一次运行这本书时,都会得到这个:
然而,当我再次运行所有单元格时,我得到了所需的输出:
每次我使用小部件并进行更改时,笔记本最终都会正确刷新,但由于某种原因它不断输出前几张图,似乎清除了输出,然后再次显示它们,然后清除输出,然后这样的几次迭代,就能够显示一切。这是我的事件处理程序:
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)
display_dataframe
、plot_lines
和 plot_scatter
函数在其中都有一个“显示”类型的行来实际显示图形,因为 %matplotlib inline
不能很好地与 ipywidgets 配合使用......感觉就像这样与它有关,但不知道如何解决这个问题。
仅供参考,这些图表是在 Bokeh 中完成的,某些数据帧是在 matplotlib 对象上绘制的。
感谢您的帮助!
【问题讨论】:
【参考方案1】:该警告只是一个错误,我认为应该在下一版本的 ipywidgets 中修复。与此同时,您唯一能做的就是在加载或重新加载笔记本后等待约 10-20 秒,“受信任”框出现在右上角,如下图所示;
仅在看到该框出现后尝试执行所有代码。
【讨论】:
以上是关于Jupyter Ipywidgets 在显示和刷新时行为不一致的主要内容,如果未能解决你的问题,请参考以下文章
与 Jupyter Notebook、Lab、extensions 和 ipywidgets 混淆
Ipywidgets (Vbox) 没有出现在 Jupyter 笔记本上
如何让 ipywidgets 在 Jupyter Lab 中工作?
Jupyter/ipywidgets 在两个级别上对数据帧进行排序
解决报错ImportError: IProgress not found. Please update jupyter and ipywidgets
解决报错ImportError: IProgress not found. Please update jupyter and ipywidgets