Skip to content

Jupyter interactive plot crops the canvas in Chrome #18206

Closed
@nmay231

Description

@nmay231

Bug report

Bug summary

When plotting with %matplotlib notebook, the canvas gets cropped to a small section in the top left corner.

Code for reproduction

When running the following code:

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

fig, ax = plt.subplots()
ax.scatter(range(10), range(10))

I get the following output in Chrome:

https://i.imgur.com/ceR5E6a.png

As you can see, the interactive plot is cropped to the top left corner. Inspecting the HTML shows that the height and width are undefined. Therefore, chrome defaults to the size 300 x 150

<canvas
  class="mpl-canvas"
  style="width: undefinedpx; height: undefinedpx;"
  width="NaN"
  height="NaN">
</canvas>

https://i.imgur.com/TQpuzJT.png

Closing the tab and rerunning in Firefox, I get no issues.

https://i.imgur.com/NdxYA8h.png


The shrunk canvas is still interactive (you can still pan the y-axis up and down), but obviously the height and width calculations went awry. I have tried restarting the Jupyter server (and the notebook kernel) and I still get the same result in Chrome.

Note: using %matplotlib inline works fine in Chrome.

To summarize, I only get this issue when I use %matplotlib notebook in Chrome. I don't know if switching to Windows would resolve this problem (I use Ubuntu 20.04).

Versions

I am running Jupyter in a virtual environment managed by Poetry.

% lsb_release -d
Description:	Ubuntu 20.04.1 LTS

% poetry run jupyter --version
jupyter core     : 4.6.3
jupyter-notebook : 6.1.1
qtconsole        : 4.7.5
ipython          : 7.17.0
ipykernel        : 5.3.4
jupyter client   : 6.1.6
jupyter lab      : not installed
nbconvert        : 5.6.1
ipywidgets       : 7.5.1
nbformat         : 5.0.7
traitlets        : 4.3.3

% poetry run python -c 'import matplotlib; print(matplotlib.get_backend())'
TkAgg

% poetry run python -V
Python 3.8.3

% google-chrome --version
Google Chrome 84.0.4147.105

% cat pyproject.toml
...

[tool.poetry.dependencies]
python = "^3.8"
jupyter = "^1.0.0"
pandas = "^1.1.0"
numpy = "^1.19.1"
scipy = "^1.5.2"
networkx = "^2.4"
ipywidgets = "^7.5.1"
matplotlib = "^3.3.0"
sklearn = "^0.0"

...

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions