pip install yahist
Examples (API docs)
(static nbviewer if Binder is slow)
Histogram objects (1D and 2D) with easy manipulations (numpy
), plotting (matplotlib
), and fitting (scipy
/iminuit
).
import numpy as np
from yahist import Hist1D
v = np.random.normal(0, 1, 1000)
h = Hist1D(v, bins=100, label="data").rebin(2).normalize()
h.plot(errors=True, ms=3)
h.fit("peak * np.exp(-(x-mu)**2 / (2*sigma**2))")
import pandas as pd
df = pd.DataFrame(np.random.normal(0, 1, size=(10000, 2)), columns=["A", "B"])
h = Hist2D(df, bins="30,-3,3", threads=4)
h.plot(logz=True, cmap="cividis")
h.profile("x").plot(errors=True, color="C1", marker=".", label="x-profile")
Much more functionality is showcased in the example notebook, including
- fitting (chi2 or likelihood)
- interactive plots (via
bokeh
) - datetime inputs/axes
- rebinning/subsetting
- profiling/projecting 2D histograms
- acceleration of 1D/2D histogram creation with boost-histogram
- using the histogram as a lookup function
- serialization to/from json
...and more.