Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blank figures in Jupyter notebook #556

Open
btlorch opened this issue Jun 5, 2024 · 13 comments
Open

Blank figures in Jupyter notebook #556

btlorch opened this issue Jun 5, 2024 · 13 comments
Labels

Comments

@btlorch
Copy link

btlorch commented Jun 5, 2024

I have happily used interactive plots in jupyter notebooks for years with %matplotlib notebook. Unfortunately, since version 7 was introduced, I have experienced troubles with getting interactive plotting to work properly. I read that version 7 requires installing ipympl and %matplotlib ipympl.

Today, I set up a fresh virtual environment and installed jupyter and ipympl. Figures are opening, the controls appear, a figure title appears, but the figure contains no content. There is also no error message on the browser's developer console.

Steps to reproduce:

# Create virtual environment
python3 -m venv debug
source debug/bin/activate

# Install jupyter and ipympl
pip install jupyter ipympl matplotlib numpy

# Open notebook
jupyter notebook

Then I use the code from the basic example

%matplotlib ipympl
import matplotlib.pyplot as plt
import numpy as np

fig, ax = plt.subplots()
x = np.linspace(0, 2*np.pi, 100)
y = np.sin(3*x)
ax.plot(x, y)

A white area is opening, the controls appear, but there is no figure content.

I have seen several similar issues on Stackoverflow, where the solution is usually to upgrade or downgrade one of the packages. However, these answers have aged as newer versions came out in the meantime. Is there a general recipe to identify the issue when interactive plotting fails?

Versions

Python: 3.12.3
ipympl version: 0.9.4
IPython          : 8.25.0
ipykernel        : 6.29.4
ipywidgets       : 8.1.3
jupyter_client   : 8.6.2
jupyter_core     : 5.7.2
jupyter_server   : 2.14.1
jupyterlab       : 4.2.1
nbclient         : 0.10.0
nbconvert        : 7.16.4
nbformat         : 5.10.4
notebook         : 7.2.0
qtconsole        : 5.5.2
traitlets        : 5.14.3
jupyter labextension list 
JupyterLab v4.2.1
/home/bene/local/venvs/debug/share/jupyter/labextensions
        jupyterlab_pygments v0.3.0 enabled OK (python, jupyterlab_pygments)
        jupyter-matplotlib v0.11.4 enabled OK
        @jupyter-widgets/jupyterlab-manager v5.0.11 enabled OK (python, jupyterlab_widgets)
        @jupyter-notebook/lab-extension v7.2.0 enabled OK
@martinRenou
Copy link
Member

Thanks for opening an issue.

A white area is opening, the controls appear, but there is no figure content.

So it looks like ipympl was properly installed and is working with Notebook 7, otherwise you wouldn't see the figure controls.

It's weird though that you are getting a white area. I will try to reproduce.

@btlorch
Copy link
Author

btlorch commented Jun 5, 2024

Thanks, I updated my initial post with the list of extensions. As far as I can see, the versions should be compatible according to the version compatibility table.

@martinRenou
Copy link
Member

Yes, your installation looks perfectly fine.

What is your matplotlib version?

@btlorch
Copy link
Author

btlorch commented Jun 5, 2024

My matplotlib version is 3.9.0.

@martinRenou
Copy link
Member

martinRenou commented Jun 5, 2024

Thanks, I can reproduce your issue.

I wonder if this has to do with ipympl not supporting plt.subplot (it is). Friendly ping @ianhi, I suspect you're more familiar than me on this matter.

@martinRenou
Copy link
Member

martinRenou commented Jun 5, 2024

Wait, I see something really weird (same code, same environment, same server, different notebooks, on the left I can see the plot 100% of the time when executing, on the right I never see it):

Screenshot from 2024-06-05 11-20-29

@btlorch
Copy link
Author

btlorch commented Jun 5, 2024

Hm, I shut down and close the notebook, then reopen it, I can see the figure.
When I create another new notebook, there the figure does not show up.

@martinRenou
Copy link
Member

It seems we have some kind of race condition in the initialization of the plot in the case of Notebook 7. It was never reported in the case of JupyterLab AFAIK.

@jtpio
Copy link

jtpio commented Jun 12, 2024

For reference this seems to be the case in JupyterLab 4.2.2 too:

image

@ianhi
Copy link
Collaborator

ianhi commented Jul 8, 2024

Friendly ping @ianhi, I suspect you're more familiar than me on this matter.

Sorry all, i've been off github and literally in the lab basement getting the final datasets I need in order finsih grad school.

Unfortunately I've been unable to replicate this with jupyterlab 4.2.3 (or the notebook command). What browser are you using? I'm on firefox

@toygardarm
Copy link

Hi!
I'm also running into this.

ipympl==0.9.4
jupyter-events==0.10.0
jupyter-lsp==2.2.5
jupyter_client==8.6.2
jupyter_core==5.7.2
jupyter_server==2.14.2
jupyter_server_terminals==0.5.3
jupyterlab==4.2.3
jupyterlab_pygments==0.3.0
jupyterlab_server==2.27.3
jupyterlab_widgets==3.0.11
matplotlib==3.9.2
matplotlib-inline==0.1.7

I downgraded to jupyterlab 4.2.3 to see if that helped based on @ianhi's comment, but it's still present.
It is worth noting that in chromium, I do see the plots, but the javascript console has errors on both browsers.
It is also worth noting that it seems to reproduce without subplots being involved at all?

Firefox: screenshot_210824_084726

chromium: screenshot_210824_085102

@martinRenou
Copy link
Member

Unfortunately I've been unable to replicate this with jupyterlab 4.2.3 (or the notebook command). What browser are you using? I'm on firefox

It seems to me that it's random, some kind of race condition. I wonder if simulating a slow connection using the dev tools would help us replicate the issue more easily.

@toygardarm
Copy link

toygardarm commented Aug 21, 2024

For what it's worth - it does not seem random on my machine. It reproduces reliably in Firefox, both with a local and remote jupyterlab environment. As in, I haven't yet seen it not reproduce!
Or - if it /is/ random, my luck is clearly terrible!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants