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

hist can be installed and used in JupyterLite, but plotting with Matplotlib doesn't work #573

Open
jpivarski opened this issue Jun 8, 2024 · 3 comments

Comments

@jpivarski
Copy link
Member

Code cell contents

import piplite
await piplite.install("mplhep")
await piplite.install("hist")
from hist import Hist
h = Hist.new.Reg(10, -5, 5).Double()
h

image

(good)

h.plot()
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
Cell In[5], line 1
----> 1 h.plot()

File /lib/python3.11/site-packages/hist/basehist.py:479, in BaseHist.plot(self, overlay, *args, **kwargs)
    476 _project = _has_categorical or overlay is not None
    478 if self.ndim == 1 or (self.ndim == 2 and _project):
--> 479     return self.plot1d(*args, overlay=overlay, **kwargs)
    481 if self.ndim == 2:
    482     return self.plot2d(*args, **kwargs)

File /lib/python3.11/site-packages/hist/basehist.py:497, in BaseHist.plot1d(self, ax, overlay, **kwargs)
    486 def plot1d(
    487     self,
    488     *,
   (...)
    491     **kwargs: Any,
    492 ) -> Hist1DArtists:
    493     """
    494     Plot1d method for BaseHist object.
    495     """
--> 497     from hist import plot
    499     if self.ndim == 1:
    500         return plot.histplot(self, ax=ax, **_proc_kw_for_lw(kwargs))

File /lib/python3.11/site-packages/hist/plot.py:17
     15     import matplotlib.pyplot as plt
     16     from matplotlib import patches, transforms
---> 17     from mplhep.plot import Hist1DArtists, Hist2DArtists, hist2dplot, histplot
     18 except ModuleNotFoundError:
     19     print(  # noqa: T201
     20         "Hist requires mplhep to plot, either install hist[plot] or mplhep",
     21         file=sys.stderr,
     22     )

File /lib/python3.11/site-packages/mplhep/__init__.py:10
      6 import mplhep_data
      8 # Get styles directly, also available within experiment helpers.
      9 # Get helper functions
---> 10 from . import alice, atlas, cms, label, lhcb, plot
     11 from . import styles as style
     12 from ._tools import Config

File /lib/python3.11/site-packages/mplhep/alice.py:8
      5 import mplhep
      7 from . import label as label_base
----> 8 from ._compat import docstring
      9 from .label import lumitext
     11 # Log styles

File /lib/python3.11/site-packages/mplhep/_compat.py:3
      1 from __future__ import annotations
----> 3 from matplotlib import _docstring as docstring  # type: ignore[attr-defined]
      5 __all__ = ("docstring",)

ImportError: cannot import name '_docstring' from 'matplotlib' (/lib/python3.11/site-packages/matplotlib/__init__.py)

(bad)

Screenshot directly copied from JupyterLite

image

@henryiii
Copy link
Member

henryiii commented Jun 8, 2024

await piplite.install("hist[plot]")

Hist can't ship with plotting dependencies because boost-histogram refuses to support named axes, so "hist" by itself stays very light.

@henryiii
Copy link
Member

henryiii commented Jun 8, 2024

Ah, wait, mplhep is present. Looks like mplhep needs to update to stop using a private member of Matplotlib that seems to have been removed. @andrzejnovak?

@jpivarski
Copy link
Member Author

Oh, you're right:

File /lib/python3.11/site-packages/mplhep/_compat.py:3
      1 from __future__ import annotations
----> 3 from matplotlib import _docstring as docstring  # type: ignore[attr-defined]

I had thought it was this: matplotlib/matplotlib#26827, which is a symptom of a general installation issue (two installations of Matplotlib stomping on each other), but that line comes directly from mplhep/_compat.py...

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

No branches or pull requests

2 participants