Skip to content

pw can't display plotnine and breaks plotnine.ggplot as a side-effect #56

@felimomo

Description

@felimomo

In the issue that I'm encountering, two things go wrong:

  1. pw.load_ggplot() called on a ggplot object produces the following:

AttributeError: 'ggplot' object has no attribute '_create_figure'

  1. If, after attempting this, a different cell is run to display a ggplot object, the same error appears. However, ggplot objects have no problem being displayed before attempting to run pw.load_ggplot().

So it seems that the problem is a side-effect of the functionpw.load_ggplot.

Code blocks to reproduce problem

from plotnine import ggplot, aes, geom_point, scale_color_gradient
from plotnine.data import mpg

p = ggplot(aes(x="displ", y="cty"), mpg)
P = p + geom_point()
P

This displays the plot as expected.

import patchworklib as pw

No problems at import.

pw_P = pw.load_ggplot(P, figsize=(1,1))

This gives the aforementioned attribute error, with the following traceback:

----> 1 pw.load_ggplot(P, figsize=(1,1))

File [python3.10/site-packages/patchworklib/patchworklib.py:479](python3.10/site-packages/patchworklib/patchworklib.py#line=478), in load_ggplot(ggplot, figsize)
    477     matplotlib.rcParams["figure.subplot.wspace"] = figure_subplot_wspace_ori [/](workspace) figsize[0] 
    478     matplotlib.rcParams["figure.subplot.hspace"] = figure_subplot_hspace_ori [/](workspace) figsize[1] 
--> 479     fig, gcp = gcp.draw(return_ggplot=True) 
    481 else:
    482     fig, gcp = gcp.draw(return_ggplot=True)

File [/opt/venv/lib/python3.10/site-packages/patchworklib/modified_plotnine.py:37](python3.10/site-packages/patchworklib/modified_plotnine.py#line=36), in draw(self, return_ggplot, show)
     34 self._build()
     36 # setup
---> 37 figure, axs = self._create_figure()
     38 self._setup_parameters()
     39 self.theme.setup()

AttributeError: 'ggplot' object has no attribute '_create_figure'

After this, plotnine.ggplot objects start producing the same error. E.g., the following cell produces the same error

P

New ggplot objects suffer the same fate, eg.:

q = ggplot(aes(x="displ", y="cty"), mpg)
Q = q + geom_point()
Q

--> [...] AttributeError: 'ggplot' object has no attribute '_create_figure'

This was tested on a jupyterhub server. The problem only goes away if I restart the jupyterhub kernel.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions