def test_image_plot_pull(): """ Test plot_pull by comparing against a reference image generated via `pytest --mpl-generate-path=tests/baseline` """ np.random.seed(42) h = Hist( axis.Regular(50, -4, 4, name="S", label="s [units]", underflow=False, overflow=False)).fill(np.random.normal(size=100)) def pdf(x, a=1 / np.sqrt(2 * np.pi), x0=0, sigma=1, offset=0): return a * np.exp(-((x - x0)**2) / (2 * sigma**2)) + offset fig = plt.figure() assert h.plot_pull( pdf, eb_color="black", fp_color="blue", ub_color="lightblue", fit_fmt=r"{name} = {value:.3g} $\pm$ {error:.3g}", ) return fig
def test_general_plot_pull(): """ Test general plot_pull -- whether 1d-Hist can be plotted pull properly. """ np.random.seed(42) h = Hist( axis.Regular(50, -4, 4, name="S", label="s [units]", underflow=False, overflow=False)).fill(np.random.normal(size=10)) def pdf(x, a=1 / np.sqrt(2 * np.pi), x0=0, sigma=1, offset=0): return a * np.exp(-((x - x0)**2) / (2 * sigma**2)) + offset assert h.plot_pull( pdf, eb_ecolor="crimson", eb_mfc="crimson", eb_mec="crimson", eb_fmt="o", eb_ms=6, eb_capsize=1, eb_capthick=2, eb_alpha=0.8, fp_c="chocolate", fp_ls="-", fp_lw=3, fp_alpha=1.0, bar_fc="orange", pp_num=6, pp_fc="orange", pp_alpha=0.618, pp_ec=None, ) pdf_str = "a * np.exp(-((x - x0) ** 2) / (2 * sigma ** 2)) + offset" assert h.plot_pull(pdf_str) assert h.plot_pull("gauss") assert h.plot_pull("gauss", likelihood=True) # dimension error hh = Hist( axis.Regular(50, -4, 4, name="X", label="s [units]", underflow=False, overflow=False), axis.Regular(50, -4, 4, name="Y", label="s [units]", underflow=False, overflow=False), ).fill(np.random.normal(size=10), np.random.normal(size=10)) with pytest.raises(Exception): hh.plot_pull(pdf) # no eval-able variable with pytest.raises(Exception): h.plot_pull("1") with pytest.raises(Exception): h.plot_pull(1) with pytest.raises(Exception): h.plot_pull(0.1) with pytest.raises(Exception): h.plot_pull((1, 2)) with pytest.raises(Exception): h.plot_pull([1, 2]) with pytest.raises(Exception): h.plot_pull({"a": 1}) # wrong kwargs names with pytest.raises(Exception): h.plot_pull(pdf, abc="crimson", xyz="crimson") with pytest.raises(Exception): h.plot_pull(pdf, ecolor="crimson", mfc="crimson") # not disabled params h.plot_pull(pdf, eb_label="value") h.plot_pull(pdf, fp_label="value") h.plot_pull(pdf, ub_label="value") h.plot_pull(pdf, bar_label="value") h.plot_pull(pdf, pp_label="value") # disabled params with pytest.raises(Exception): h.plot_pull(pdf, bar_width="value") # wrong kwargs types with pytest.raises(Exception): h.plot_pull(pdf, eb_ecolor=1.0, eb_mfc=1.0) # kwargs should be str plt.close("all")