Ipywidgets (Vbox) 未显示在 Jupyter 笔记本上

问题描述 投票:0回答:2

我遇到了这个错误

A Jupyter widget could not be displayed because the widget state could not be found. This could happen if the kernel storing the widget is no longer available, or if the widget state was not saved in the notebook. You may be able to create the widget by running the appropriate cells.

当我跑步时:

import plotly.graph_objs as go
import plotly.offline as py

import pandas as pd
import numpy as np
from ipywidgets import interactive, HBox, VBox

py.init_notebook_mode()

df = pd.read_csv('https://raw.githubusercontent.com/jonmmease/plotly_ipywidget_notebooks/master/notebooks/data/cars/cars.csv')

f = go.FigureWidget([go.Scatter(y = df['City mpg'], x = df['City mpg'], mode = 'markers')])
scatter = f.data[0]
N = len(df)
scatter.x = scatter.x + np.random.rand(N)/10 *(df['City mpg'].max() - df['City mpg'].min())
scatter.y = scatter.y + np.random.rand(N)/10 *(df['City mpg'].max() - df['City mpg'].min())
scatter.marker.opacity = 0.5

def update_axes(xaxis, yaxis):
    scatter = f.data[0]
    scatter.x = df[xaxis]
    scatter.y = df[yaxis]
    with f.batch_update():
        f.layout.xaxis.title = xaxis
        f.layout.yaxis.title = yaxis
        scatter.x = scatter.x + np.random.rand(N)/10 *(df[xaxis].max() - df[xaxis].min())
        scatter.y = scatter.y + np.random.rand(N)/10 *(df[yaxis].max() - df[yaxis].min())

axis_dropdowns = interactive(update_axes, yaxis = df.select_dtypes('int64').columns, xaxis = df.select_dtypes('int64').columns)

# Create a table FigureWidget that updates on selection from points in the scatter plot of f
t = go.FigureWidget([go.Table(
    header=dict(values=['ID','Classification','Driveline','Hybrid'],
                fill = dict(color='#C2D4FF'),
                align = ['left'] * 5),
    cells=dict(values=[df[col] for col in ['ID','Classification','Driveline','Hybrid']],
               fill = dict(color='#F5F8FF'),
               align = ['left'] * 5))])

def selection_fn(trace,points,selector):
    t.data[0].cells.values = [df.loc[points.point_inds][col] for col in ['ID','Classification','Driveline','Hybrid']]

scatter.on_selection(selection_fn)

# Put everything together
VBox((HBox(axis_dropdowns.children),f,t))

f
t
仅在我运行
f.show()
t.show()

时显示

然而当我跑步时:

import ipywidgets as widgets
from IPython.display import display

button = widgets.Button(description='Hello')
display(button)

小部件显示良好。我已经在网上阅读了解决方案并尝试过:

jupyter nbextension enable --py widgetsnbextension

jupyter labextension install @jupyter-widgets/jupyterlab-manager

当我检查时:

jupyter nbextension list

一切看起来都很好:

Known nbextensions:
  config dir: /home/hajar/.jupyter/nbconfig
    notebook section
      jupyter-js-widgets/extension  enabled 
      - Validating: OK
  config dir: /usr/local/etc/jupyter/nbconfig
    notebook section
      jupyter-js-widgets/extension  enabled 
      - Validating: OK
    tree section
      ipyparallel/main  enabled 
      - Validating: problems found:
        - require?  X ipyparallel/main
  config dir: /etc/jupyter/nbconfig
    notebook section
      jupyter-js-widgets/extension  enabled 
      - Validating: OK

所以我有点困惑为什么它没有显示 Vbox 的结果。 我正在使用 Jupyter 笔记本。

版本列表:

jupyter core     : 4.6.3
jupyter-notebook : 6.0.3
qtconsole        : 5.0.1
ipython          : 7.13.0
ipykernel        : 5.2.0
jupyter client   : 6.1.2
jupyter lab      : 3.0.9
nbconvert        : 5.6.1
ipywidgets       : 7.0.0
nbformat         : 5.0.4
traitlets        : 4.3.3
python jupyter-notebook plotly ipywidgets
2个回答
3
投票

已解决-

plotlywidgets
用于渲染FigureWidget 未正确安装。

我用过

jupyter nbextension install --py plotlywidget --user
然后
jupyter nbextension enable plotlywidget --user --py


0
投票

不是

plotly
VBox
的问题,而是一般情况下
ipywidgets
的问题。 如IPython Notebook ipywidgets 不显示

中所述
   jupyter nbextension enable --py widgetsnbextension

重新启动 Jupyter 解决了我的问题。

是否有效,你可以用这个简短的例子来测试一下

from ipywidgets import Button, VBox
VBox([Button(description='button 1')])

© www.soinside.com 2019 - 2024. All rights reserved.