From f9d596136e6d10d136d4cd3efb36df410865dd7b Mon Sep 17 00:00:00 2001 From: Michael Eliachevitch Date: Thu, 27 Jan 2022 18:20:14 +0100 Subject: [PATCH 01/15] Allow for irregular pull widths Assuming the axis has an `edges` attribute, I assume it should also have a `widths` attribute, so I thought we can just use that for the pull bar widths instead of calculating our own assuming a regular spacing (which might not be true). For the patch-width, we just use `right_edge - left_edge`, instead of what was done before, which dividing this difference by the number of pulls and then multiplying them again with the same number. --- src/hist/plot.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/hist/plot.py b/src/hist/plot.py index 51c61b35..d379ba6b 100644 --- a/src/hist/plot.py +++ b/src/hist/plot.py @@ -494,12 +494,12 @@ def plot_pull_array( right_edge = __hist.axes.edges[-1][-1] # Pull: plot the pulls using Matplotlib bar method - width = (right_edge - left_edge) / len(pulls) - bar_artists = ax.bar(x_values, pulls, width=width, **bar_kwargs) + bin_widths = __hist.axes[0].widths + bar_artists = ax.bar(x_values, pulls, width=bin_widths, **bar_kwargs) pp_num = pp_kwargs.pop("num", 5) patch_height = max(np.abs(pulls)) / pp_num - patch_width = width * len(pulls) + patch_width = right_edge - left_edge patch_artists = [] for i in range(pp_num): # gradient color patches From 62c477dc87c5fe9848e1829381ef0caf491903bc Mon Sep 17 00:00:00 2001 From: Michael Eliachevitch Date: Tue, 15 Feb 2022 20:48:31 +0100 Subject: [PATCH 02/15] Take into account variable bin widths in plot_ratio_like --- src/hist/plot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/hist/plot.py b/src/hist/plot.py index d379ba6b..3a2ce20a 100644 --- a/src/hist/plot.py +++ b/src/hist/plot.py @@ -425,7 +425,7 @@ def plot_ratio_array( ) axis_artists = RatioErrorbarArtists(central_value_artist, errorbar_artists) elif uncert_draw_type == "bar": - bar_width = (right_edge - left_edge) / len(ratio) + bar_widths = __hist.axes[0].widths bar_top = ratio + ratio_uncert[1] bar_bottom = ratio - ratio_uncert[0] @@ -440,7 +440,7 @@ def plot_ratio_array( bar_artists = ax.bar( x_values, height=bar_height, - width=bar_width, + width=bar_widths, bottom=bar_bottom, fill=False, linewidth=0, From ef4d45ea79618949f192e66f544bde3e112b9e44 Mon Sep 17 00:00:00 2001 From: Michael Eliachevitch Date: Tue, 15 Feb 2022 20:56:51 +0100 Subject: [PATCH 03/15] Add WIP changelog entry for irregular bins in ratio/pull array plots --- docs/changelog.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/changelog.md b/docs/changelog.md index 41d944d5..56c217d7 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -1,5 +1,10 @@ # Changelog +## WIP +* Take into account the irregular bin widths of `Variable` axes in + `plot_pull_array` and `plot_ratio_array` when plotting bars + [#369](https://github.com/scikit-hep/hist/pull/369) + ## Version 2.5.2 * Remove more-itertools requirement From 37b6d3df54064f87d5da43a55d8e28f2ebd0b1ce Mon Sep 17 00:00:00 2001 From: Michael Eliachevitch Date: Wed, 16 Feb 2022 18:04:16 +0100 Subject: [PATCH 04/15] Correct values with bin width when fitting curve to hist Necessary when doing pull plots for histograms with an axis of type `hist.axis.Variable` with varying bin widths. --- src/hist/plot.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/hist/plot.py b/src/hist/plot.py index 3a2ce20a..689c9bde 100644 --- a/src/hist/plot.py +++ b/src/hist/plot.py @@ -331,8 +331,15 @@ def _fit_callable_to_hist( # Infer best fit model parameters and covariance matrix xdata = histogram.axes[0].centers + + # For axes with varying bin widths correct hist values with widths while maintaing + # normalization. + bin_widths = histogram.axes[0].width + bin_width_fractions = bin_widths / np.sum(bin_widths) + h_values_width_corrected = histogram.values() / bin_width_fractions + popt, pcov = _curve_fit_wrapper( - model, xdata, histogram.values(), hist_uncert, likelihood=likelihood + model, xdata, h_values_width_corrected, hist_uncert, likelihood=likelihood ) model_values = model(xdata, *popt) From f697e9e7d50eedc77bd5ab22f4d5f9ff6298cf33 Mon Sep 17 00:00:00 2001 From: Michael Eliachevitch Date: Wed, 16 Feb 2022 18:29:50 +0100 Subject: [PATCH 05/15] Fix typo in attribute name Co-authored-by: Henry Schreiner --- src/hist/plot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hist/plot.py b/src/hist/plot.py index 689c9bde..3f4c3b62 100644 --- a/src/hist/plot.py +++ b/src/hist/plot.py @@ -334,7 +334,7 @@ def _fit_callable_to_hist( # For axes with varying bin widths correct hist values with widths while maintaing # normalization. - bin_widths = histogram.axes[0].width + bin_widths = histogram.axes[0].widths bin_width_fractions = bin_widths / np.sum(bin_widths) h_values_width_corrected = histogram.values() / bin_width_fractions From e764997aa92d52c98106872a6d5cf9f4ac302a6e Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Wed, 16 Feb 2022 13:09:27 -0500 Subject: [PATCH 06/15] tests: regenerate images --- tests/baseline/test_image_plot_pull.png | Bin 20789 -> 19528 bytes .../test_image_plot_ratio_callable.png | Bin 19242 -> 16886 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/baseline/test_image_plot_pull.png b/tests/baseline/test_image_plot_pull.png index 7f70d299b016f7f77a8b44c3870626e559ad6ea0..afcde28125ae30835a11e3494e108dc03aa359e7 100644 GIT binary patch literal 19528 zcmchzwf*=hd(%lWBAdPeiDBYcsqLhGicT0EInQQOg zdEaxc^L^*P@B4$zh ztXC{F!Y?jcQ5D-)7W%dhI@Wq9GCH=FrWUrQMsFY5>si|vS(vjhvN1B#KQy$pwY1@8 zVlw-$3m7e|4VZ>?c52}!=$0>3ZBS5d79l@ZZZzq9LP3!#lMs2X==f!Q!pT+o@ZxBD zNczCnOGQ`NnyuKEft3)Q@yQFNGRd^G3Q-G=x-{p3JmZzu9Fodr>)*d(sO77x_vc4t zDjw4$58{)bva=*jkr|~wVo_~=Y(VKGKsID%y-2^w!eujQ^XJ%gk}N?%lH3bhNHIif z6$O5CQb{}%LL)bQgf4x7@wDPp?%IW3%+9$f%F9?sS94)z!6QSLO?6sOQz2 zapCQQdFtDHd;L$X$-Od1SnE-(tgN0FFx{r0p!hgF{btXZuc)Z#S5uSKV#foNgY_}- z&BCJ)N7h58-y)o!AML`3|mw3@4QKj)tExa7-uotLat>ufq!9+Z*j z>|bUwr10|P8(CI&clXrvbbR%eAoM4XAE!#r5eT8VSf$&<3O^3n+Oj;@m}vhUN$0db zpnSab6YGj^aPZ=YLDKbx&dxjGZC+XhR16GvJUl#hciP(8Zr^|Up51H|WqNg0eV<21 z)Y+MPT7?#c?;v!0$_Xk6Uyws0!8;8yNV+!yZd{2Ln^f-{lc z6%`!I%gaY6C)Rs^bywVj2*6w`Qr{AQUs(@gA2BMekwXO~h;!RH0>kb63&7yO#<#*v+vLz~PjjB`L;Q!J@ zB6Ci+$19xC$9yP5z#p^F7P(d<8K{8PLV+&Q@2KsOXE?wWa3I6CZJBo@o~#?fvu>{3 zp_wSdX4FqDQia?rt_Q7Tin+(*9Xt6Q)6F1Wo*y3vFlxD+Y1)H(&}W7pd-@Wt?=s!1 zIBb2K>PN7_Snff*a$L35O+l#@ZtcwxzA|w#ARb!B$Gf%Hz1>z}WUroq9V`jA3gy2L>9Ko5IU{2{R(re6 z#iDY%$)~I`F5F^h|JIBlGHfcUn^6T%@3L|Fl-rq%xSi+4eODM#ZaKNSLocFe5hf@S zw7YRi={z3(e2KE|FI`sH2JYwYJ5vR`Ph(QGeKYHjdo;ayUoaR`nc~5icV0th#&dPk zn%t>?hi0gR&WuRNPzFXK&u;Ol!Pk_V?I5q;ig(ZXFAh2#`@G^PyH|JIV{G{p`t$x@ z30G|lRsEF7L=zt@iOm{YWcAZ!GyFdVykgxJ%tsUyRl9$9xUA>VP@)+%leO#J_x|>L zTxgFrAuh8N8yN|){vo)Fuh@q2vf}1SmHUV{Sy$^%TX{Ys{zp3JC;KBsx;LF`6Pp4E zO5XfHWj7yh{cg9~+S>Z&>}WezyFPJ9%Oz+j(Iq%0=6-T=@_lyG`-zE(YCcR~TI1OK zyAwxj&F7W%##}8c6AS7Fdu)mWzcFT$bruL}XlQg_j$m*?w1h}BJv%Ej@!ig-C;56- zRu;(%6-gNL3t8F0XQne={OaF)*OH`us*x&{cZ!RBFLwDzrEGI6+caKC z5w8;$O;ADMF5F~p!eQ#kvuAg;r|PqlzkmN8mXsv-{JAGr&(ZO5EN%eyg4M#URD$`w zzE?fC?Lw5{}hrGOBYF!SCtrsNq|9p{fKG8l5ymR9!#J$R@ zDxGJskQh?a(q=X{wM|JN1TN-;g@lCA25EEF;nCg0Ik!eDXdF`(O?2&ue4_32jQ01t z=s5LcXPfkDx;V1V<71CVm#y91pDisnKmKUgUmfCdImqRbw_P8N{Pj!Z_KmAIF^L~? za;oHnc;lWp=lT7qwcg&%JlT|X*teSb>+T?%CK;|JUu)=oJq+?jszkV@mDP{FzHo00 z0_)jd=x=p(dzNi$E-y||q+_3X`;a>O8ug_!yPrAM)YSOrwG0g@=kt1rX2^O5Xp@?) zxESp`R4?#}Ni3YLuR7zIyhwW`vOg=m#0;@sMC6*l*_LpT(UmJ#)<(;6ew79halFOnijd|+f(eZ_%b9m|f4jAVc1?{FA>MUlw< z*YgZXU&&%Sy757pc*ZNEe7yA|tvdOpV}B{(&t(tMMHJPgqT_uDBcw`3we-3)L^mF+ zHGU)GtxPoN=DtU69t($zVPUZ`t3)iWLQzS2@xuIV_u+R*qHs-4 zG64aBC5YQZ|%Jo)uE6tB_t%8((#mH86_W5hzIvSd`7+|d@2`Jhl(6AUR+Utwc+DB`_ygr7c@!{dRb#8WDe24d3 z%m#B+MMOnIVMG4%!)5b->8nmrQ7BRt8g)ap88vRmW{CSWK37_v?E4G;8->96!bUs*X^TnZ{rlx-Q^l1o$6u=H0KZi+q>;n_|T<$)2 z(6-na4@iwOdB8-**01en*UxRHT$7=E88NX>gF0wdQmmJ$Y!;JW7}U$B7Z#f8FZP*W zY#)=7$o%~Lnik`^?PxLZ>A%XSh#?S&-|fT@x6ty%_3K+>PbjVgJzqlU68L==AOBN8 z00s%S?Hh=cJH#TKPvA5N3cf!!aBy${To)S~D*QOe!f*%<^QQ?z>_G#t5DQRx4L%jOfn z)WjbjZMgZG5kVB__(cy7B_lZH8}h-e0-$)O7eMCK>2gW3)%NSHU0vcd-abAz$0{r` z%*M(EXY%sHspNVKb%YgOy^?UaD7yPo8M2(}i~mHA)} z3bBy*`1b9&mH?$&2mAXA>lIUV3!J1*^Eia;rYb9DF~y6_gh94z!=cYV-k7lFO}3Um z#gSdF-n>VWVuPN&lwwC6XKiPB3LBqe7XJg+*sxI||T*_D(SbVZFETfsIn9WI=ST8!m!V0`}kd0M_O z=M9O6jahCLS~#SU;tUR*o6WCVL&$~yj#sh3)41;Shyx~i{~m?gZspp&18b~Xw`R|d zcLjBXBfoqhhAc8NGQw)qn>t(^&tZ`+6VG01I#S$k_J!9eEJwK@id(KLk+0p9Ty>Op z=}&?#Bu(CvzbXHG?b1m6t4Cc=4E%)_jz4AHTsQwIyhQ+v_8f9m9SGC%n zp`h+0yJ8+}W!gSC zSR5|Wh27RN>xx%}DlfVH+2icv*RKyRHZL!_cxy!i@R6;!wq^?Xez?YoMf1BYbN$8f zQW8(cdXBQT+koqnh?tmGST~xspFi4!ZD%5ai9I0`b1QED+F6;Z7r61!6YiJjapCmc zVbi^RbsR?89>t&wKa1&Au#y?-73Q~z*aKw~xN!&x{oCHXT^lY!d8emWWHl$YJK+C> zhK9y3<596E==RGOXWXiVgjm4+i+*QZ5#UJ_z$*|vg|c?hmQr3x z(&T+C^r@`m9L(3uvAdt_U$f&cR3^P}9BOA(((U;&_~wi$JxNKhJ8?Unucf5A$5Shp z4A+1*VKjNR`97*If5<%E@BGdv^XS}gWAqvXRwARsJRwzp0Y6)Kg-! zC(Mq!&+Aw?NbXC!b%aaFW^umx``xoh?j#mctQ#MnPuP!{t<1ND(=sv1d3$?jC3##_ z{T|XDb;aV_3pqKO`y8ntxv;R11v`c&E#g_MG%W>%Fio1GyL+9#ukXuhhs|>CTGsmW zgLp|fx%#y8LUuW$cCAXw=Omn#f^eO)^Y>e~Z_}4gR!lle1>I*Bx4&BquvPx3mWqoSIz1kM@+F1E2y#wRASUS(jSa3^4rB{hoO zxqkiny?gh*_ATeiGRdead9;_nOwpK)^wJVWXGmH)8j`_ne@nrOh5T3s3fd<49{)y`WiN zb}XC3FZ1!no%<~Mw@G;H=X=D-p3u>?^CtBeJ_d;Y=?+nEg@ra$Gp|={)guiAayws5 z9!@v=H*YCNzNwu&q3H|FCRE1jj4wjU5ragh8yp-QaqMQld()&;Yn|C_7CU~lw+B3t zit5f)WeFzXX@--@eE;_2$B(-+(OI!IykeEzu7R2|;-e5Cj05M!kE2%SM&Y{QNs1A)#E^ zdU>VS=M3$gctP#2o>b;$HxEQEqNl=4KzzT>#Kd&5U*J)s-$|(7mDmYz;%K{t3{vo$ zi?d_t1n$V|82H_p@)S32-+zdndSkSv^Vcv(j`-#-u%eU#$3Fc~!2eSusDjj5m+_tvfgWw)}+o8pud;&qhAI{|i@+ zIxT{hn))S#`PUF}p9xIM$jX+FvA0)W^e$Gz#10hcwnQjM$|Uh?%EYls(4_T~d7SCE ze@#qC$lIvdmEDKbua=+{2RF#>%aEJubytbcDAkjp4EO*1S-FdMS30Xm)!CQd^~kc! za;8z?Fo*un5w_+oUC1MYKVN1}H|q@mV`|j7j_^(xvZB6u7TeKxc6RncMuts$7Bw{^ z1CGq?m$PF*mhP)V!YYc4>#I{IyPsRgZemo_w)dCPxNiMmut)@AaCULAxiypmaEFMP zSg~F^J`i1<)thzgnhq1*J%;n4;-uu9oJWHkM^wtnLkdG=L`3aWNv=ZSlrp)04*&3M zZcTs0f^xUZtYV@$Su_Bp(sBC{oW-YNDLCP6zs?V*x?pmTmNSy*W$RTXCH;>d`~d`% zrCnd=^ga)^S;p`i^|WOMaHYyAvDsEe;+@istiHyX+(0bqT$ z)6O)%v{VAAwXw1BeIunkm0aRu3W}6p12^9n6flvKlUwi0-_g?-GLG`pzms-Ym3i?m zC@wi=$OZU%1*wayrW>vx+tUjjH}}saWW*AOO|83k@4k5PVj7N#L8BM?uV25WmzUeZ zo=Bnm@9@;chk7 zl^~zcaP-Aee{Gj{X7HN(^_?F#$qF5}-|lWgpgx%N%6wjTNjhrR{_T}+)d_ZE&+z)K zc|g{B01k+`ZGC}IC~-e`h6LIUU}UWfUH)p`$#0R0x~l$N>mlw4NrDFtvh2{(XyvYJ zm<%{yf$C1!(()ulrN^4G-W2Z`gkVh)c3gM%r#x#MVFrNg`%6%6Y4H`}5 zZl?!}PX5{Z_!Eux4h}67=LK})AAbk}_BA&*e`jFOmnwl9pR->MKyI{*!GV@RE_ZMd zCaLIqE(4xVyR+PvgbA|bdI&pSpFZ8i!Fdj2=)75qjaRlJg*$Pw(A!;o;yV3x3ts{b zEvM_zQ()uwHmB-`R|PJPD74-7@qDnz7V9t1nNANkIqDBq3+i{)O1iAqhMAEJW02(5 z48I+BJ2{TKJT7z-EoK_M5xV{S^pM43k~d(XhfZOjf>+5@DrayED%Ahra5OZuhOVy9 z?&l|0{wU>DB*Rd%->j{zB?|gup20J3Lz+j5a2E@qev}(mi3QA3RWV+bnYiH*68>%u zB8q*ccMJA%OILy8RnG(-2kXNLhq>itiS^O42LNl1%Rmgl1uO_M11Dz;)YXvU(eB(~ z7<{8QS>t5;x7!mUybVmc>=#b?N5Si372y#PinCLl*B`X!WU6h#*Z+b2nyHi%b^M?a zG!K;${W}?QNsCY^0=Z(6v9jV<-sFc~8 zOfXD})Z(>9T@*-$`8*L;4TFGj*rhD_)A7tr!+~$k<#i`xQy0xpaiib4qX(kF;>w)` zs7ZA$R11dUJ%(2I@87=hwJ>fSQs8i{3kNJmx^7D_VDu;zWzl@W->vXtLoQj@PTTs`6!%Jt^XS^&TFO4)rh27Zo-mRr4xxRV)(! z=jh<-fWLnYzuPW9swnj8eC?j~cakX@C28f5cO9M^ibSNKp_EJ1nDy#S5yz@KKTwBF z+t$%B4@n`X`=qb8H&eZWadL8!7#I>hmjjhA1&@>;B2^mjFkkrH;?B-o>yBnIfGP6t z?5niWjpMLDBEDxM&WV2_PpM(g2l!M-LPC&&KO7<4d-r}p=B)ydi^9dlWjbCNI%ZK{ zD|Bii1-qQaOx2_)svIk=mTJIr;?xtiUBhI~J+{EMYvS(A)#d`s!)n~`+uhxLx1vfCnHGNF7C(IWUy?v32f*zeR2NV(j2mU|kE&S>BTM@?Lg9BJ9Wjf(w4ci$EO6-(CB1(@ zfG%vu$T|}FWBUy+rzC@|W@!SoBd4)aOalSZXDlq++uP(kJn_IJ?En^xZCS-12v5@; z?D?!)t?elt$BK@Ub`O?2|MlUi$bd>!@z#M--{^jOVpSX=k3GHkXVNDe9ML{x?kZtE zmM`q(9&%v5#JzjB5#Zo@ExLRV&Gl0(qUGbtD+F%))ow~!Np1(RgXC!Pl+{!rprFND z=p^vDyynL9zco@%MtIH;9UO!ZU}*9;;DTfyaqfg*0Hb#a35_>pe2q;9lJW}Fjt1yl z^vS)_*CqoiU;t-OcbHDr#QyZbiXThIkjGEKv0r2ErA$Q`B6K~KL^IGiytdOVjI|BR zhV$To1Q3HMVnM}+lp<_pRurYnaWYHqSB9Kk`mVHYpwG`X1=MUcVvO4jX-dbl2Z1md z$?c)0Mu>xhb98hRQ+;{!#tlR>m6pCu#9@AI8sP2T+DLe7>kD>^Nz=_j@2e`6!y+9M zT%}w4y+EFdaKVuSMG%=?tH0gk$O`A+u>`iooH+DUT_0W>uoD zWL{nKd;gL&J#VRg_|tCMGc>tDkbx{O3V{M06H|XPY2F8c4CR`jkKRe4VMa{_6ko++O1ZnV} zpF=-oRxPuC0VjZtj!q85SH+Y&5poZkm3|ti1K#`i_#7{B*(`=cMm7O6wcP#fDu97p zl_J#l5DIW1gE=~K&NT=91Rm>bx65W{UZU~m&sbik9fl@V*2E^H%=>D|8vy6^9+BM7 ziHQkb^G{Fy7gkBnd=m;=e5o!1noaw>CK7DyHyaVa(3rvD?^qbkW1z?_QD@Og=~0=r zSAqj{#6yacR}KcvJ$*p6SfShm`k z>I>gC-Ll^p_lu7wx;$GFINs}%i)AyxhqV0o$rIIacQ6b*c<|s!dj0WY{F7TWlbnf7 zGe3QnfrkUUQO0TB3?wImxdnj78rVzt6{_+J6ZvJ8CIcs{_oe=&#PC}-3d^OH3KjoM z%8%?nXod1ae(eyBo022F4@Bslot^iM#@_&^UVr%T;d|g&!$L!!8ynLCm>YjaFwoh8 zanEg|bH-xd6*L7&2!|h$k`Uoi=jMI_=QdL3=91N}LMZ%hcd-*e1NoZOcS%YA0FlOJ zx1tz3R`3FEQk|r07Scuv)M~aH<0C7)k<5eQs#XU2`qrSM??7akTU|AYcFXfyv%mh# zW>NZNf3=10a9kJxDv)`h3}=ux>JJ+pRskZD)BTK7_|t8jh2N1-FJfR}VcC#3$Fdka zbKWxy6iaCuds|mmXT31vWoMW~5(A3>28snj4qezxAk#;|Y=i^X0$v4(Y0t1IuX_aTU-8zB zE&Z2NQw^-GnX^*~AiCv~Q2XBmonci}mZYp5Y01*n$o_uCGSiV~`=cfWS$geJS@3U{ z{5r+pi$V#Na@Q(_&r}+(Jl-vg+SLZT^1?g{dVl(qotsM^85^7R;p4{v01d#yz%6>m z1?QWSx{?G6tgWr#@VcF@SFCJQZ@xzAALFs|yc4Lk;8M+6XQi~%)J!_%{7ifXwPA)y zp3Rz9kkh203WfS+0Q5UW&?b#1zL&uPia6G>hZ|iN)%vFrUZ<62okN-`{jd zVVp8tqN$}N2S|eS@peT#16N=3Aq7g{9wUQ4CJRM*=+FL$w#nL5vf;+EU+MP)_z{0o z-36%PWr*DW?2lA{dNn)0>GoEKu)q`odmgb+K>E#q6-?WNyoV$b^oDWNBp#) zsw+(`6Vw5<%_o&k)lsvP|1yCTtgI0r453`?CS76^5t-O&d)wKQVTsTMYjJ2t*sk0Q zObQcj9ILW5Q5(u%jhcJTNn}8bC1TEv(Mhk8`IqZ)0H%VIGFk?Zu7-_Haj=4?@z8)k>Q_OHe^QamK6P z>y@g3(;QjeIgq1l1LXU&rBkrXsD8IK%G!lfUjzk|i#KI9dG%*MMiHY67AYJa%7jFQ zZ2OK~5`%&;%{QfECp8lql_gcWL1X4m@2dbC1RyXOW;g8*kNertv!Q6v!XPkrCaif? z#%g%_(%NhgpVd$8pxr(&}xg9n-fC*><)Z4il`&0)NxZRnuAuR;4F$6q_;HpJ$uS01Kw8aBzVl5>2EKZ4bK30aQ>~NN0 zej|N@S;=*OCKI#-NTs?EK|5lYKSD0rhU^|17A6E@dwzaCSdze=)bL77z_xyr~_$2N9LBj2${*W9j6f!b0 zR8-XAVm*wPF$g2wkl-+BWETq*>@$xG*Ifx-HnvE>D^|xldN!yu)YQ`;yp>nF!r%ge z_CXbXE+~istScV>%v22{buKY4loarc{2ChB4s_h|>~MB^Yq!&rr-YaH%$02N`TglN zzejj^U4uQcJWo~CLFj$jP8b+!o07&fcp9c)f@K~2+6{6Sgq3rmzu0oNg}7v*GJ z-jPeqfifA}_B#s;An9j6V)2I>66`$9ljZp~U>FE58A0pyp^c0J-0D8pm0QrrIuz42#vc!!=>w zIKka(K=8fJW$E?9r2-!wIq1nI&MubA4WDFClb z&7eCkB|yUsOi%CCy1=`uTl@Qw7M}=t>~6iz zW#8%_H|6Fq&$Z)xa*u@URfg;WKu4(wsn zX^<0dlW^ZlQ_Lc{oyO~W%sJpBt%M8Z{vfv(VW**Dwzfx#vq#@1ElYvms-+|!sVU!U z+V2{`kNKb18TLH-4eJ=vk+nYcz1~)z@|4K)k?T%4wq~ z(FXrx__arCvw0QL#^Zq|D_fgGP{z{e9XrClP{yT_RRm>K5&3<5e7v9*o!7p+?~FX@ zZan}}b?Ju?iD@}FlmP+((IZ&{BY@8IPc zxV+dcYt)rRA;dL;c>ty366!nqG=`;x1yQ*9@gd~m_?Gobc@>rWP@FwPATj9l_(Nqb zhvsz`CnhLhU+AppwcniVTp7r@a-YlkG2rQEOi);+z4USO60Z}l4+9mZ!7(LRE)Zv$4b0jrlSHwkPj{Aij@*G4O@aZqwK zK*{ys*PWhO&iYkuWN3H$wzwtO^b|ZQ4y_kp3veeo&Z1+I^1gt>E5)#`g~Ji$B==uJ zcRa8PeMP$BKrwkX)~SekaMWs9Fs|nht+taOWHN*-)M?QAIclBvAAuXiqW*laCLuo3 zfq$kFq}F&6F4VcCXIsO$bmJ30$e1`<7&j+i(*ON-@Xc|$9MHo@X92NLFfaslbadQJ z>j$^=F@O@3BdELl{QXhC!aj5b4>QW*5QBu2R0<>xpbu<-{ybP4(XDWMAt9jy`+G4I z6UZ;a(NY@0qCr)T&G52guU$ZnrV25(o0QczAKTxdciJdqsouM%B{MQ2m7{C?o-z zKgKmkCr4cy{S42so3)6~bza#atV3wejWWYS(a5-j3_DJIE+M+yY$(aoq$$IJkmwS) z)M#pIG9nHwjN}y|7|^nQ7U}C;T--Ng3e>KiCKd#At_2e_r$Y^LM4o`!qsHoM^mQLPJY&Ha8rH^Yk zay>6%;!0}K*R=Ug_xX{iGA3T_heA6p@@yU_Uq;C?GorI|Mv7+2A;+B{#ZL}K(-EM+ z>v&jSe?8EJ<<9_diXnqt1nQq$iW11YPmLQ_I8Q1$zlmFfAYF5S;)^< zyE~P&-#9#W4_o>MirPcbS`=FPf{qgRs|0#~T}(YwInVPm(6(BdeL%2sy1G2@sztL_ z6Ah~`#Ua1?Ycla;PeoiwJpLno7kqb~98Nc}P;0U6F|H;u4?)joce~TyH((y`Ipw~0 z4w7cgSr=X9=09>7wEO$Ww{hF4a%I^no-9<3u6OsgM#t|3OG!*058H(WhY7C396EDG zZr7UqQuFI(qk_|B&ZA`meVN~ax$PSM=xX`VzFfa}N5Is$Vj*)cMtVVO@snhK1#kT` zyriY(OWNy{eMy(+y9W2}2fjJmP5P1fG`7L8KQyVJwY@JiI-|AyV-0U>m(LgCr&oTb zKBaydd++Z(Eq=-sHg@@fqEP3cAl9m%FI03X>g?`aOq#P6tc$vBj`rI-M0%0addp_~ z?CQHCAje@|pd5e7L-VZpeq}^tOInA<#S0e8nOuzeB%7J~Q%#lPQSUty=VF#UYFwb% zhgL0nJhd`@PLS~OHT=Y=;l)c#gBbw`5=iJ2N_OTv5OXu1@W2^m@59K@s*}DuwHR=PYqF4oeww)$tXZz|W4ViE8q<~xsT zVtC}QZ%8t5aMWmMZdu!eF5MS;1>Og3EDl$`@uT?5B;8*=A0%k3Z;KW01R*6L^SuxQ z)=-nDVY<|37M}7t)YDx|a@;$+4+Z3W$hCdiu2E9NNOK2%YGl$C`-s_>q&`N> zk$2t}%bSZ?hra0Qc#rZ}zQHSJwoM}O`1|W6#gdC5=upObBPRuN2T-2wZM2?Y(VRITo#E5wps7UOHamd58K>(+O~D*BahD zed=;x3I>E`5Z+!0388{&T=6}(I)Kz+sS@>`&^T%WERN_}!6mLztIn9{+IUrXW+rvI zY{KvV0~{NXBqFUcm`>O40@y65zwienj#QBlh1q~*S{w>$4(sCZmo)o$uNGH`vjCK7 z7Ry#TY#^nK2eM(4A<_&nziSKvcUKu1tvw{s$V(SPlpg}K2h=Ljd(fj;ET;t#!Wv-1 zNWF&uR5?$g0FFn}VUc_F*`)8r2vddtN_`48l$zRFq~-%c75Y(tApe+=K_wMM-@`2e zoj}{Rk|Sx?OBX?MQK`1i15+xw*97N@Qzv;6(j;Z+`u|N|6tOigHhK1F=TBemzOVd3 zhN4I>LGBa(4?+9u= z+X*lp%#F>~tS(>a%lQ1etBa`|vACMx)L9CG2y^S{Wjv=<@^Kj~wVEpf;@sH-pbsCt ziAAai7tqquN&?dr|Cz_6&uqkAREd?+#avjCL0q5!Y9L09%CE&GB>?33z@-c;tn?3f z1;DyKTqGPs!t)wD2>@vaz$l^w-UQ>GWN!pVg8RK^>TevSfPgkMamhC|H)q2D@OiGN zy5uGIf7uGXvB86%qwdPAl zjgUn@&`IrZV*()sjRzzdREtGul#ZUef>EPmmzc|1L{wZ{*(i6xZoU-pl}3D8^ZJ+0UGS9puT0ifOG-;Cf?Flf$r<1s42jKbRM8ED zV!*_(8T)}E@7%pt+k#0CI zSL@OKluPl4O#J*>FqB^_?qkJfCZ{@P^?7D4-Cv)-4v((Q*QfoSn5^et_fE0dVC^;k z)WUgkYE#t$%zT*OZ$No6fG)B?K1B>|Bk6P@z>Ex3*(}}iD9o+ZFIWcgF?XvxFM)Fn z?^TbBN@%#XsNAfYmgjI^C;ANB1Tm1<*GlI8y-<}>fT~y#3WegB8d~RE)vj(Nce)G_3K&ew#?#*R_Vrz9@z3&2Xke&U@5wkSO^05*RhV z7lI@Kt~k%eYde6_!eU}F2h3HJ`VXdX#?E+*O@j#uUYM3!|I-9#xwfl@(|PLotEB~( zj7E41DyNVU;svJ@zx9e z_%pZ2y^g{c(SL=3ZJ^j}jQ!+rvkS&><>`L}s}4U=h>Ps3_1=0CP#&NlEksGKJLo9R z=h{__|1>RLzHJ8^)o!1hI7*ADJoK0@SlJBdi!WNDKNb)mOS=c;8-m$kl~Mo0M;Hwk zl7kL9<{3c5(ZIltcTh`YO`7E_6kJCv1P zKr`&`ugAiBrKPNo9zELH-e#UURWCEf0|pKrwq@LD>wi;EbM;!`6PEAkLgG(7!Eo?@ z+V%7fuFC%wvA3`LXNlOt7SZPy-5*lPetAeujRwRU(zXif!Tb6XPZanA2mcG@TN;`Z zIqZ&*gnqDsIt|uUwW8lK;QcBb$C_`x2BOlBE&+l`R18e}M4y*JXjUmmrtCg@(Ao*> ztjlO{8``i?BPOu^S!L@=x{!tjLHFYYg8$Bmf+OdG;}d*V4ouRtRI(bGJC)wpjiiXz zssUyu=v)xIA}wIB^7Zp${(KWv@9?U;q)&lGcs8ac8o4pO&x?l~hgZSYI0NMvm`Pz< zcL6#%0y7rqxPVS@?%hk3Plc)R=M+ILdJNVeruwtHg_EVqut)5PH^`ksVH<(>ya{+3 zDc1FKsIW>g<>21DJ~gQ5XlT>mg=!ibi*F%y2?VGx`nGS92x?{sgG4#cq+x1$h@W{n zIyz3z%v@;zYCshzDd46ShXUdbCaI~Y2oe}k-bXQ{k@;dbawTw4oC}&uKyS(M(tjX= zP2VKgD`MjhU|V+w3u}2IY8;%kne}xUUl6UIhN<@$vDFf(d(dw3!)QTDwyrH2KKepUnPkPR-5U!fOQ> zWw>AVTlyhl4+5t@vfqK6+yOT3+1p=eyQ}&6q+Z^9>PBM(LcZDdThr`$!qiIMxUI1J z=qQ4pA$&06{^B4oGyUv^Pp72aSBv#z9uAC#P1QCEv8fovTq zG1x`i2w-RW3{2-e7YKtnt|!ZVK$V{jEO-C>`4L>|cUMc;C!+M$*hn6740$O$QCD8I zy}`>Tbx}q8{f^1%O={}apPij4zcbp)=`4r_gNX{==@o4?@%Z$gk9EbQSd1B-nQ#XD zHB7p@%Y8Q<_eIYOPe~eRdg%bjv5p_{1S)#OdIIoLt<+Fw(mhlxD2~~BK1wp^8!f0S zOR4EmuH|!^mt1mucB@^kxp`!Q1xa$|8zfpRyg65j z`Aw0X3dv==U7(c%U*6AnC2}!{V={Bk45pQuEFQPjri;(u;uv&yz=)$y9#YdUO_rG` z+k}B?iwBYO4Zs#KG2H~qE|Ml739XgOKxD&vHFM1xjEV>nhUq&79T5=_>{j~8fd$I< zoKX2glA2l#p)BqeRR~q0;|K8m;*gTcf~mryW?L+6FM^(Si4+b9++8Zdw*L5m?~jlc zIe}WeL(Xh9tx3kO^C2}(PSxN7RVT|H8a=rpo!%*^A1N1YraZ|m$zz^Nh7q5sw0e5? zm8QlxeSS{yXVsZX+Ao5Ddi{KTQNBV0X-6De`^Ixs_#SNRm&Otf9+%&F&kA=BMW(7b zqH}Y@PG^>)O`^|B%H2^2qId5HJ<-ltTP|MzJtk(<5>%%9&1z0#(&O@aK)d2Qz5{NU z)aw}8s&aeaao(uEbpKj-eK4rLK%=TyXcfFscd>Z41pStg<`L*Wym70&Y7-h9phLk% z0GnF1mye37UE{_`tbeFd*^N6jp0W7aQgR$KtLi&tbjr3W_dkHa2K`Icm+Ev9bm04> zp_RjLnIqZ;I%Xa{ecG+j>juh`Lhpnan2BhI4l^0D|i zJ$IM-q@*oI`=jLq+^U6`{bmzgpXED8+EipfLIO6l9TFOBCoFPu?=D9A{XnqxxR86WM6g)yaW_985^idE(z zn9Y!$4#d!up}M-s3>X%lUPTZj`TI}bynh@*`)>W0c2D?gBdWMYi=TM6b8p;2GnAj9 zyF*SJkdFQf`qBXU-iz1It8W4G3m}zi4gV@0FYDdUX+Kv{hFQc2p-B;&OYZ>)RbATz z=CGsBzxiqvv*$a#G@EHb9pzq`f#Qg!JfV$U_JF!S~2v6_t;B#%&!d>pc~cSvnLS4p;|?15E#QDEH@)qK^; z!68Mj{S(Ty8|+2uYstpotm&BD3kmslc4E?2pAis%{&8k7W6VZ#Fx|y@vAc9R9KXWt zf_HvC!b5Xo!?~JdYH-r#Ti%)L(gXSe=qWF|AdOO4-NgA<9|1g~*7KQ0?u>K#thT03BCt>Cm5~p|OP@?tSTb60#SgvnJl?JA)PE*;oeLpN-rx z=-An#0ChrH_6Ob;ai7n*wCRGB#o*675U}qDiRpL5e6#9L&Mq}wz8P^juQl5CJ$Zhf zQDm9bqS*zS5&_H}Lmx?Jrz6ODVj!(D$4VovL7?PQhE_W%9!@&)BRS%-in#oL*7GkEUSW_?4eIw~i z@>D5?eo0`|TflvX^h<7nkw3Q6(L0mY+}x?uT+=#trE!T(sGk^fD3IVQNGm9aHyFgH zYt+>bEWkt3*5<7j5|EgNCjTIgtvaunFQ%&3;1+n@J;sFD`V@n61Z9Ju+Q6I!uXWt>v!Yxh}qc1gE0Q7 zEXg;nBkgnl=}%S8Bm@ABwr)5XI0X0#Z0?}c1;)q6cMdp~6c?w$OD!6g@e*3V;QP($ zv0h*4gMuG#9x^fpL%Goh&5sS`#x;;E!7l)HkN1-ji<%GcN*Dv{IfB1nsWZ7RF=8wE zQ>+DPGy|E>>k~e^y35&i3u5;MN5LEL@huwHfJb!+B=tZdjz8mp6&6!nob-~sfFbn1el#;8@3Y4<`O)^jeHXX7grjELVI%ELV2 zXCQ}CfG-@Bb{``e7QNs1;6(<$pFc+*W)l-1A6d_L>EVd;L{H?7KEY1uX$8D$I9XFQ z_$>ysu_T~`3ZbYWb^c2ZVel(_MbybGr+>2bC1}BY-1krrAOf-+ShRS+ddH*few;Q) z9?LcAqVy~DGn4p*#s}TRcJtTkcmL^_bvv9`dRaT5siD!a{qEg6Y+~YED-n;Peu5Tx z6}rQMNC0cdJ8MvoA_|H?w&1@^!3SD+R`YZ1p#ssNBNAD3j)NwgsEJ{5iIYc4fhnZg!6#L=^EM+vtW4>K7$)bE&4CYo z0`e$OZD!1?mjVMIs4{wB^{P2p$#FfJ@xjC$>vXfqRugSMH(6-rmy9}jgx(GjhK;XI zGG%|MHx8_WCeDm>Oc~M-2Tvjqdkg4nMXtxzuswc&;?fDWPS($K0+$8MxnNq{IylHL zj`3GaWs(K1vdV)&R7~s{5QxaMg6IDd@ebq(TRTE);!RRV!M?e6#MwMPf#E|rxME|} z34dqfi;j%XP6v-nt{s{_j8{osUY?ecQfz;7N?Q{;;Z{RBpyJPlx>U*5w$wj3_%%QZ z??G}r7C5wc*w|m8+c6)YajG4sF(^zc&`zTWZSsmvPEKk*uL4tQl_j|jwijBH+KIS& ztJd^;kuu3khWPYGJZwJ1Z-o5w|K&|cN3Q^%A-gx_Gk?oFVaHkiR-hCb1~;0WbP|68aB?6&$*e+>em7FAhpZwXus9#hIygh%_E-WtA-u=J z2ON+kV7vj=#B4GOJ6Jj&UWT#*jah}@qatqq75 z?+?%Y0W4M#Cg;EvjeA_4kGpKvBIQ^_#656hLhnyHNisoW(Fg>C=uFTe`F#9}?IR2wS$N&s*5LXi-a L70DNR^WlF0voA55 literal 20789 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
8fb*31G(~ms|iPTCe79u#l&og`b|D1_lS; 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 diff --git a/tests/baseline/test_image_plot_ratio_callable.png b/tests/baseline/test_image_plot_ratio_callable.png index 752586413b880db19a1d55e960fc5a1553c73fcf..3197af7387bf8703776b44c5ceb3751c94efe5d8 100644 GIT binary patch literal 16886 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 S@HZHcWF?g(3dLT$`@aAOH)#I= literal 19242 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 Zw$i%U<+2>JZzQ}`HW6XmP;E#`*)LIE%%uPT From 471d727db740e5f1249a1b5d81badb14fd9faa09 Mon Sep 17 00:00:00 2001 From: Henry Schreiner Date: Wed, 16 Feb 2022 13:32:48 -0500 Subject: [PATCH 07/15] fix: add mult --- src/hist/plot.py | 6 +++--- tests/baseline/test_image_plot_pull.png | Bin 19528 -> 20789 bytes .../test_image_plot_ratio_callable.png | Bin 16886 -> 19242 bytes 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/hist/plot.py b/src/hist/plot.py index 3f4c3b62..6663e784 100644 --- a/src/hist/plot.py +++ b/src/hist/plot.py @@ -332,10 +332,10 @@ def _fit_callable_to_hist( # Infer best fit model parameters and covariance matrix xdata = histogram.axes[0].centers - # For axes with varying bin widths correct hist values with widths while maintaing - # normalization. + # For axes with varying bin widths correct hist values with widths while + # maintaining normalization. bin_widths = histogram.axes[0].widths - bin_width_fractions = bin_widths / np.sum(bin_widths) + bin_width_fractions = bin_widths / np.sum(bin_widths) * len(bin_widths) h_values_width_corrected = histogram.values() / bin_width_fractions popt, pcov = _curve_fit_wrapper( diff --git a/tests/baseline/test_image_plot_pull.png b/tests/baseline/test_image_plot_pull.png index afcde28125ae30835a11e3494e108dc03aa359e7..7f70d299b016f7f77a8b44c3870626e559ad6ea0 100644 GIT binary patch literal 20789 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
8fb*31G(~ms|iPTCe79u#l&og`b|D1_lS; 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 literal 19528 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 L70DNR^WlF0voA55 diff --git a/tests/baseline/test_image_plot_ratio_callable.png b/tests/baseline/test_image_plot_ratio_callable.png index 3197af7387bf8703776b44c5ceb3751c94efe5d8..752586413b880db19a1d55e960fc5a1553c73fcf 100644 GIT binary patch literal 19242 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 Zw$i%U<+2>JZzQ}`HW6XmP;E#`*)LIE%%uPT literal 16886 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 S@HZHcWF?g(3dLT$`@aAOH)#I= From 658e2ba8c00760543d14b308f82eea2f06b32dd5 Mon Sep 17 00:00:00 2001 From: Michael Eliachevitch Date: Wed, 16 Feb 2022 19:58:07 +0100 Subject: [PATCH 08/15] Refactor: Use mean instead of sum divided by length Co-authored-by: Henry Schreiner --- src/hist/plot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/hist/plot.py b/src/hist/plot.py index 6663e784..eacbcb29 100644 --- a/src/hist/plot.py +++ b/src/hist/plot.py @@ -335,7 +335,7 @@ def _fit_callable_to_hist( # For axes with varying bin widths correct hist values with widths while # maintaining normalization. bin_widths = histogram.axes[0].widths - bin_width_fractions = bin_widths / np.sum(bin_widths) * len(bin_widths) + bin_width_fractions = bin_widths / np.mean(bin_widths) h_values_width_corrected = histogram.values() / bin_width_fractions popt, pcov = _curve_fit_wrapper( From 8a470df55b34931952716226744f5865ad9bd82d Mon Sep 17 00:00:00 2001 From: Michael Eliachevitch Date: Fri, 11 Mar 2022 20:04:59 +0100 Subject: [PATCH 09/15] Account for variable bin widths in _plot_fit_result --- src/hist/plot.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/hist/plot.py b/src/hist/plot.py index 16d3f773..7111084c 100644 --- a/src/hist/plot.py +++ b/src/hist/plot.py @@ -374,7 +374,10 @@ def _plot_fit_result( ) hist_uncert = np.sqrt(variances) - errorbars = ax.errorbar(x_values, __hist.values(), hist_uncert, **eb_kwargs) + bin_widths = __hist.axes[0].widths + bin_width_fractions = bin_widths / np.sum(bin_widths) * len(bin_widths) + h_values_width_corrected = __hist.values() / bin_width_fractions + errorbars = ax.errorbar(x_values, h_values_width_corrected, hist_uncert, **eb_kwargs) # Ensure zorder draws data points above model line_zorder = errorbars[0].get_zorder() - 1 From 2d598a8d1812954252b33249b11a8ee2ac9429d3 Mon Sep 17 00:00:00 2001 From: Michael Eliachevitch Date: Mon, 14 Mar 2022 21:30:35 +0100 Subject: [PATCH 10/15] Test `ratio_plot` with variably-binned axes with a callable I add 2 tests - `test_image_plot_ratio_variable_axis_with_regular_bins`: Same as `test_image_plot_ratio_callable`, but use an `axis.Variable`, but set the bin edges to be regular, same as former test with `axis.Regular`. With this I just check that the plot doesn't depend on the axis type. For this we re-use the existing baseline plot. - `test_image_plot_ratio_callable_bayesian_blocks_bins`: Actually try the ratio plot with variable bin widths. For this I ran the bayesian blocks algorithm on 5000 random numbers. I used that instead of 1000 numbers because for 1000 the binning seemed very coarse for me and the fit plots just looked like a triangle. For this we create a new baseline plot. Also I added a helper function to create these `plot_ratio_callable` test for different axes/binnings in order to avoid code duplication. TODO: The baseline plots for `test_image_plot_ratio_callable_bayesian_blocks_bins` looks like something is off, the centre pull is much larger than the pull errorbars. I have to check that the bin widths are correctly taken into account in the errorbars and ratios. --- ...ot_ratio_callable_bayesian_blocks_bins.png | Bin 0 -> 18898 bytes tests/test_plot.py | 65 ++++++++++++++---- 2 files changed, 53 insertions(+), 12 deletions(-) create mode 100644 tests/baseline/test_image_plot_ratio_callable_bayesian_blocks_bins.png diff --git a/tests/baseline/test_image_plot_ratio_callable_bayesian_blocks_bins.png b/tests/baseline/test_image_plot_ratio_callable_bayesian_blocks_bins.png new file mode 100644 index 0000000000000000000000000000000000000000..a37900495d063a5394efb6dd8a716affa51c723a GIT binary patch literal 18898 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 literal 0 HcmV?d00001 diff --git a/tests/test_plot.py b/tests/test_plot.py index cededea7..258bda86 100644 --- a/tests/test_plot.py +++ b/tests/test_plot.py @@ -691,6 +691,24 @@ def test_image_plot_ratio_hist(): return fig +def _make_plot_ratio_callable_test_figure(hist_axis, n_numbers): + """ + Helper function to create a plot_ratio figure with a gaussian model. + + The purpose is to create tests for histograms with different hist_axes, e.g. + regular and various variable binnings. + """ + rng = np.random.default_rng(42) + hist_1 = Hist(hist_axis).fill(rng.normal(size=n_numbers)) + + def model(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 hist_1.plot_ratio( + model, eb_color="black", fp_color="blue", ub_color="lightblue" + ) + return fig @pytest.mark.mpl_image_compare(baseline_dir="baseline", savefig_kwargs={"dpi": 50}) def test_image_plot_ratio_callable(): @@ -699,24 +717,47 @@ def test_image_plot_ratio_callable(): `pytest --mpl-generate-path=tests/baseline` """ - np.random.seed(42) + hist_axis = axis.Regular( + 50, -5, 5, name="X", label="x [units]", underflow=False, overflow=False + ) + return _make_plot_ratio_callable_test_figure(hist_axis, 1000) - hist_1 = Hist( - axis.Regular( - 50, -5, 5, name="X", label="x [units]", underflow=False, overflow=False - ) - ).fill(np.random.normal(size=1000)) - def model(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 +@pytest.mark.mpl_image_compare( + baseline_dir="baseline", filename="test_image_plot_ratio_callable.png", savefig_kwargs={"dpi": 50} +) +def test_image_plot_ratio_variable_axis_with_regular_bins(): + """ + Test plot_pull with an ``axis.Variable`` that uses regular edges. - fig = plt.figure() + The resulting image should be the same as that from + ``test_image_plot_ratio_callable`` which uses an ``axis.Regular``. + """ - assert hist_1.plot_ratio( - model, eb_color="black", fp_color="blue", ub_color="lightblue" + hist_axis = axis.Variable( + np.linspace(-5, 5, 51), name="X", label="x [units]", underflow=False, overflow=False ) + return _make_plot_ratio_callable_test_figure(hist_axis, 1000) - return fig +@pytest.mark.mpl_image_compare(baseline_dir="baseline", savefig_kwargs={"dpi": 50}) +def test_image_plot_ratio_callable_bayesian_blocks_bins(): + """ + Test plot_pull with variable bin widths generated using bayesian blocks. + + + Mostly like ``test_image_plot_ratio_callable``, just using a variable + binning instead of a regular one. + """ + # bin edges generated via hepstats.modeling.bayesian_blocks on 5k random-distributed numbers + bayesian_bin_edges = np.array( + [-3.24126734, -3.01357225, -2.22544451, -1.61651199, -1.13075189, + -0.65398704, 0.72260413, 1.23926518, 1.67818774, 2.09883056, + 2.63836271, 3.92623771] + ) + hist_axis = axis.Variable( + bayesian_bin_edges, name="X", label="x [units]", underflow=False, overflow=False + ) + return _make_plot_ratio_callable_test_figure(hist_axis, 5000) @pytest.mark.mpl_image_compare(baseline_dir="baseline", savefig_kwargs={"dpi": 50}) From 0ac80f960819da0ed96b7d939601ee687f86506b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 14 Mar 2022 20:39:58 +0000 Subject: [PATCH 11/15] style: pre-commit fixes --- src/hist/plot.py | 4 +++- tests/test_plot.py | 30 +++++++++++++++++++++++++----- 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/hist/plot.py b/src/hist/plot.py index dae35b64..508812bd 100644 --- a/src/hist/plot.py +++ b/src/hist/plot.py @@ -376,7 +376,9 @@ def _plot_fit_result( bin_widths = __hist.axes[0].widths bin_width_fractions = bin_widths / np.sum(bin_widths) * len(bin_widths) h_values_width_corrected = __hist.values() / bin_width_fractions - errorbars = ax.errorbar(x_values, h_values_width_corrected, hist_uncert, **eb_kwargs) + errorbars = ax.errorbar( + x_values, h_values_width_corrected, hist_uncert, **eb_kwargs + ) # Ensure zorder draws data points above model line_zorder = errorbars[0].get_zorder() - 1 diff --git a/tests/test_plot.py b/tests/test_plot.py index 258bda86..f43cea88 100644 --- a/tests/test_plot.py +++ b/tests/test_plot.py @@ -691,6 +691,7 @@ def test_image_plot_ratio_hist(): return fig + def _make_plot_ratio_callable_test_figure(hist_axis, n_numbers): """ Helper function to create a plot_ratio figure with a gaussian model. @@ -710,6 +711,7 @@ def model(x, a=1 / np.sqrt(2 * np.pi), x0=0, sigma=1, offset=0): ) return fig + @pytest.mark.mpl_image_compare(baseline_dir="baseline", savefig_kwargs={"dpi": 50}) def test_image_plot_ratio_callable(): """ @@ -724,7 +726,9 @@ def test_image_plot_ratio_callable(): @pytest.mark.mpl_image_compare( - baseline_dir="baseline", filename="test_image_plot_ratio_callable.png", savefig_kwargs={"dpi": 50} + baseline_dir="baseline", + filename="test_image_plot_ratio_callable.png", + savefig_kwargs={"dpi": 50}, ) def test_image_plot_ratio_variable_axis_with_regular_bins(): """ @@ -735,10 +739,15 @@ def test_image_plot_ratio_variable_axis_with_regular_bins(): """ hist_axis = axis.Variable( - np.linspace(-5, 5, 51), name="X", label="x [units]", underflow=False, overflow=False + np.linspace(-5, 5, 51), + name="X", + label="x [units]", + underflow=False, + overflow=False, ) return _make_plot_ratio_callable_test_figure(hist_axis, 1000) + @pytest.mark.mpl_image_compare(baseline_dir="baseline", savefig_kwargs={"dpi": 50}) def test_image_plot_ratio_callable_bayesian_blocks_bins(): """ @@ -750,9 +759,20 @@ def test_image_plot_ratio_callable_bayesian_blocks_bins(): """ # bin edges generated via hepstats.modeling.bayesian_blocks on 5k random-distributed numbers bayesian_bin_edges = np.array( - [-3.24126734, -3.01357225, -2.22544451, -1.61651199, -1.13075189, - -0.65398704, 0.72260413, 1.23926518, 1.67818774, 2.09883056, - 2.63836271, 3.92623771] + [ + -3.24126734, + -3.01357225, + -2.22544451, + -1.61651199, + -1.13075189, + -0.65398704, + 0.72260413, + 1.23926518, + 1.67818774, + 2.09883056, + 2.63836271, + 3.92623771, + ] ) hist_axis = axis.Variable( bayesian_bin_edges, name="X", label="x [units]", underflow=False, overflow=False From 6172c7e6c7495bcf1f4a561749e6ccb62d21cb93 Mon Sep 17 00:00:00 2001 From: Michael Eliachevitch Date: Mon, 14 Mar 2022 22:03:29 +0100 Subject: [PATCH 12/15] Fix the tests by using re-seeding the global bit-generator Most tests use `np.random.seed(42)` to re-seed the global RNG. Initially I didn't follow this in my tests, because according to its documentation it is not best-practice and a legacy function. > The best practice is to not reseed a BitGenerator, rather to recreate a new > one. This method is here for legacy reasons. Instead, I created a custom RNG with a seed and used that to generate my random numbers. However, the tests failed and I noticed that the random seed not only affects the numbers to fill the histogram with, but also the fit, which I can't affect via a custom RNG, so I have to re-seed the global RNG. Therefore, I fall back to using `np.random.normal`. --- tests/test_plot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_plot.py b/tests/test_plot.py index f43cea88..0274b83f 100644 --- a/tests/test_plot.py +++ b/tests/test_plot.py @@ -699,8 +699,8 @@ def _make_plot_ratio_callable_test_figure(hist_axis, n_numbers): The purpose is to create tests for histograms with different hist_axes, e.g. regular and various variable binnings. """ - rng = np.random.default_rng(42) - hist_1 = Hist(hist_axis).fill(rng.normal(size=n_numbers)) + np.random.seed(42) + hist_1 = Hist(hist_axis).fill(np.random.normal(size=n_numbers)) def model(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 From 46c372cef4be8cb6573e911cfb55aaa2ac64d438 Mon Sep 17 00:00:00 2001 From: Michael Eliachevitch Date: Mon, 14 Mar 2022 22:40:35 +0100 Subject: [PATCH 13/15] Apply bin-width normalization also to errorbars --- src/hist/plot.py | 4 +++- ...ot_ratio_callable_bayesian_blocks_bins.png | Bin 18898 -> 18873 bytes 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/hist/plot.py b/src/hist/plot.py index 508812bd..57096df6 100644 --- a/src/hist/plot.py +++ b/src/hist/plot.py @@ -375,9 +375,11 @@ def _plot_fit_result( bin_widths = __hist.axes[0].widths bin_width_fractions = bin_widths / np.sum(bin_widths) * len(bin_widths) + h_values_width_corrected = __hist.values() / bin_width_fractions + hist_uncert_width_corrected = hist_uncert / bin_width_fractions errorbars = ax.errorbar( - x_values, h_values_width_corrected, hist_uncert, **eb_kwargs + x_values, h_values_width_corrected, hist_uncert_width_corrected, **eb_kwargs ) # Ensure zorder draws data points above model diff --git a/tests/baseline/test_image_plot_ratio_callable_bayesian_blocks_bins.png b/tests/baseline/test_image_plot_ratio_callable_bayesian_blocks_bins.png index a37900495d063a5394efb6dd8a716affa51c723a..25d3c7c860ed05df9a7a78fc705e86a4029069c0 100644 GIT binary patch literal 18873 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 From f8bb4603a522dafef01fb4c800b1abc9afd62767 Mon Sep 17 00:00:00 2001 From: Michael Eliachevitch Date: Tue, 15 Mar 2022 15:25:45 +0100 Subject: [PATCH 14/15] Fix: Take into account variable bin widths in _plot_ratiolike Also update baseline with fix --- src/hist/plot.py | 12 ++++++++---- ...ot_ratio_callable_bayesian_blocks_bins.png | Bin 18873 -> 19503 bytes 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/hist/plot.py b/src/hist/plot.py index 57096df6..1fc04a81 100644 --- a/src/hist/plot.py +++ b/src/hist/plot.py @@ -623,6 +623,9 @@ def _plot_ratiolike( # Computation and Fit hist_values = self.values() + bin_widths = self.axes[0].widths + bin_width_fractions = bin_widths / np.mean(bin_widths) + hist_values_width_corrected = hist_values / bin_width_fractions main_ax_artists: MainAxisArtists # Type now due to control flow if callable(other) or isinstance(other, str): @@ -662,7 +665,8 @@ def _plot_ratiolike( ub_kwargs=ub_kwargs, ) else: - compare_values = other.values() + other_bin_width_fractions = other.axes[0].widths / np.mean(bin_widths) + compare_values = other.values() / other_bin_width_fractions self_artists = histplot(self, ax=main_ax, label=rp_kwargs["num_label"]) other_artists = histplot(other, ax=main_ax, label=rp_kwargs["denom_label"]) @@ -673,9 +677,9 @@ def _plot_ratiolike( # Compute ratios: containing no INF values with np.errstate(divide="ignore", invalid="ignore"): if view == "ratio": - ratios = hist_values / compare_values + ratios = hist_values_width_corrected / compare_values ratio_uncert = ratio_uncertainty( - num=hist_values, + num=hist_values_width_corrected, denom=compare_values, uncertainty_type=rp_kwargs["uncertainty_type"], ) @@ -686,7 +690,7 @@ def _plot_ratiolike( elif view == "pull": pulls: np.typing.NDArray[Any] = ( - hist_values - compare_values + hist_values_width_corrected - compare_values ) / hist_values_uncert pulls[np.isnan(pulls) | np.isinf(pulls)] = 0 diff --git a/tests/baseline/test_image_plot_ratio_callable_bayesian_blocks_bins.png b/tests/baseline/test_image_plot_ratio_callable_bayesian_blocks_bins.png index 25d3c7c860ed05df9a7a78fc705e86a4029069c0..982691d1382ebb1d5f5b6f24d555174d1aad3eac 100644 GIT binary patch literal 19503 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ⅆ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 literal 18873 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 Date: Tue, 15 Mar 2022 15:45:21 +0100 Subject: [PATCH 15/15] Reword changelog for bin width normalization in pull/ratio plots --- docs/changelog.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/changelog.md b/docs/changelog.md index 8877e62e..a446bfbd 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -2,8 +2,10 @@ ## WIP -* Take into account the irregular bin widths of `Variable` axes in - `plot_pull_array` and `plot_ratio_array` when plotting bars +* When plotting a histogram against a PDF or other histogram with + `plot_pull` or `plot_ratio`, normalize the histogram values to the mean bin + width to correct for irregular bin widths when using axes of type + `axis.Variable`. [#369](https://github.com/scikit-hep/hist/pull/369) ## Version 2.6.1