patchworklib
patchworklib copied to clipboard
pw can't display plotnine and breaks plotnine.ggplot as a side-effect
In the issue that I'm encountering, two things go wrong:
pw.load_ggplot()called on a ggplot object produces the following:
AttributeError: 'ggplot' object has no attribute '_create_figure'
- 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.
Solved by install an older version of plotnine
pip install git+https://github.com/has2k1/[email protected]
Apologies for the inconvenience. However, I am unable to continue supporting plotnine in patchworklib due to limited capacity in my labour. I believe patchworklib remains a valuable library even if it only supports matplotlib and seaborn.
If there are many requests like yours, I will consider addressing this issue, but please do not have large expectations.. I'm terribly sorry about this thing...
No worries at all, thanks for taling a look at it anyway!
On Mon 13. May 2024 at 08:39, Hideto Mori @.***> wrote:
Apologies for the inconvenience. However, I am unable to continue supporting plotnine in patchworklib due to limited capacity in my labour. I believe patchworklib remains a valuable library even if it only supports matplotlib and seaborn.
If there are many requests like yours, I will consider addressing this issue, but please do not have large expectations.. I'm terribly sorry about this thing...
— Reply to this email directly, view it on GitHub https://github.com/ponnhide/patchworklib/issues/56#issuecomment-2108044030, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIFQIMPAPG3SQKS7QGUNJODZCDNBXAVCNFSM6AAAAABD3IAIIOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDCMBYGA2DIMBTGA . You are receiving this because you authored the thread.Message ID: @.***>