ipympl
ipympl copied to clipboard
Notebook rendered with Voila does not show Axes in a matplotlib widget
Describe the issue
When rendering a notebook using Voila, the interactive matplotlib widget using ipympl backend is also rendered. However this widget is completely missing the Axes, therefore not showing any data at all.
A minimum reproducible code would be
%matplotlib widget
plt.ioff()
figRHF = plt.figure(figsize=(10, 5))
figRHF.canvas.layout.min_height = '400px'
axRHF = figRHF.gca()
test = axRHF.plot([0, 1], [0, 1])
print(axRHF)
print(figRHF)
print(figRHF.gca())
print(test)
display(
figRHF.canvas
)
And this is the output from this code, on the left is the Jupyter Lab notebook output, on the right is the Voila output

Versions
'3.8.12 | packaged by conda-forge | (default, Oct 12 2021, 21:22:46) [MSC v.1916 64 bit (AMD64)]'
ipympl version: 0.8.2
Selected Jupyter core packages...
IPython : 7.29.0
ipykernel : 6.5.0
ipywidgets : 7.6.5
jupyter_client : 6.1.12
jupyter_core : 4.9.1
jupyter_server : 1.11.2
jupyterlab : 3.2.4
nbclient : 0.5.9
nbconvert : 6.3.0
nbformat : 5.1.3
notebook : 6.4.6
qtconsole : not installed
traitlets : 5.1.1
Known nbextensions:
config dir: C:\Users\are014\Miniconda3\envs\humaninjurymodel\etc\jupyter\nbconfig
notebook section
ipydatetime/extension enabled
jupyter-matplotlib/extension enabled
voila/extension enabled
jupyter-js-widgets/extension enabled
- Validating: ok
- Validating: ok
- Validating: ok
- Validating: ok
JupyterLab v3.2.4
C:\Users\are014\Miniconda3\envs\humaninjurymodel\share\jupyter\labextensions
jupyter-matplotlib v0.10.2 enabled ok
@jupyter-widgets/jupyterlab-manager v3.0.1 enabled ok (python, jupyterlab_widgets)
@voila-dashboards/jupyterlab-preview v2.1.0 enabled ok (python, voila)
Other labextensions (built into JupyterLab)
app dir: C:\Users\are014\Miniconda3\envs\humaninjurymodel\share\jupyter\lab
jupyter-widget-datetime v1.2.0 enabled ok
I have the same problem with Canvas integrated to ipywidgets components, like Tabs or just any Layout. It doesn't happen always and not for all plots. But when it happens there are a lot of exception messages in the browser console:
Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The HTMLImageElement provided is in the 'broken' state.
The problem doesn't appear with ipympl version 0.7.0.
Have you tried upgrading to the latest release of ipympl? I've seen this issue in the Voila CI in older releases of ipympl (0.8.0) but I was able to fix it by upgrading to latest (see https://github.com/voila-dashboards/voila/pull/1048)