jupyterlab interactive plot

Albatross picture Albatross · May 3, 2018 · Viewed 58.8k times · Source

I'm getting into using Jupyterlab from Jupyter notebooks. In notebooks I used to use:

import matplotlib.pyplot as plt
%matplotlib notebook
plt.figure()
x = [1,2,3]
y = [4,5,6]
plt.plot(x,y)

for interactive plots. Which now gives me (in jupyterlab):

JavaScript output is disabled in JupyterLab

I have also tried the magic (with jupyter-matplotlib installed):

%matplotlib ipympl

But that just returns:

FigureCanvasNbAgg()

Inline plots:

%matplotlib inline

work just fine, but I want interactive plots.

Answer

Mateen Ulhaq picture Mateen Ulhaq · Apr 25, 2019

Complete steps

  1. Install nodejs, e.g. conda install nodejs.
  2. Install ipympl, e.g. pip install ipympl.
  3. [Optional, but recommended; update JupyterLab, e.g.
    pip install --upgrade jupyterlab.]
  4. [Optional, but recommended; for a local user installation, run:
    export JUPYTERLAB_DIR="$HOME/.local/share/jupyter/lab".]
  5. Install extensions:

    jupyter labextension install @jupyter-widgets/jupyterlab-manager
    jupyter labextension install jupyter-matplotlib
    
  6. Enable widgets: jupyter nbextension enable --py widgetsnbextension.

  7. Restart JupyterLab.
  8. Decorate with %matplotlib widget.

Not recommended, but to blindly get the widget extension working in Anaconda, you can run the following in a terminal window:

conda install -y nodejs
pip install ipympl
pip install --upgrade jupyterlab
jupyter labextension install @jupyter-widgets/jupyterlab-manager
jupyter labextension install jupyter-matplotlib
jupyter nbextension enable --py widgetsnbextension