Stacked and Unstacked Histograms Components

Setup
# Create background histograms
background_hists = [
hist.new.Regular(50, -8, 8).Weight().fill(np.random.normal(0, 2, 3500)),
hist.new.Regular(50, -8, 8).Weight().fill(np.random.normal(-3, 0.8, 1800)),
hist.new.Regular(50, -8, 8).Weight().fill(np.random.normal(-2, 1.5, 1400)),
]
# Create signal histogram
signal_hist = hist.new.Regular(50, -8, 8).Weight().fill(np.random.normal(0, 0.5, 500))
Code
fig, ax = mh.model(
stacked_components=background_hists,
stacked_labels=["c0", "c1", "c2"],
stacked_colors=sns.color_palette("cubehelix", 3),
unstacked_components=[signal_hist],
unstacked_labels=["Signal"],
unstacked_colors=["black"],
unstacked_kwargs_list=[{"linestyle": "dotted"}],
xlabel="Observable",
ylabel="Entries",
model_sum_kwargs={"show": True, "label": "Model", "color": "navy"},
model_uncertainty_label="Stat. unc.",
)
mh.add_text("Model made of histograms", ax=ax, loc="over left")
Full code
import hist
import numpy as np
import seaborn as sns
import mplhep as mh
np.random.seed(42)
# Create background histograms
background_hists = [
hist.new.Regular(50, -8, 8).Weight().fill(np.random.normal(0, 2, 3500)),
hist.new.Regular(50, -8, 8).Weight().fill(np.random.normal(-3, 0.8, 1800)),
hist.new.Regular(50, -8, 8).Weight().fill(np.random.normal(-2, 1.5, 1400)),
]
# Create signal histogram
signal_hist = hist.new.Regular(50, -8, 8).Weight().fill(np.random.normal(0, 0.5, 500))
fig, ax = mh.model(
stacked_components=background_hists,
stacked_labels=["c0", "c1", "c2"],
stacked_colors=sns.color_palette("cubehelix", 3),
unstacked_components=[signal_hist],
unstacked_labels=["Signal"],
unstacked_colors=["black"],
unstacked_kwargs_list=[{"linestyle": "dotted"}],
xlabel="Observable",
ylabel="Entries",
model_sum_kwargs={"show": True, "label": "Model", "color": "navy"},
model_uncertainty_label="Stat. unc.",
)
mh.add_text("Model made of histograms", ax=ax, loc="over left")