From 26be3d8317173143b0709464b82fb56908ce144a Mon Sep 17 00:00:00 2001 From: Nic Eggert Date: Wed, 30 Jan 2013 10:59:25 -0500 Subject: [PATCH] Re-write stacked step histogram --- lib/matplotlib/axes.py | 46 +- .../test_axes/hist_stacked.png | Bin 5992 -> 0 bytes .../test_axes/hist_stacked_bar.pdf | Bin 0 -> 5985 bytes .../test_axes/hist_stacked_bar.png | Bin 0 -> 5712 bytes .../test_axes/hist_stacked_bar.svg | 661 ++++++++++++++++++ .../test_axes/hist_stacked_step.pdf | Bin 0 -> 5590 bytes .../test_axes/hist_stacked_step.png | Bin 0 -> 6091 bytes ...hist_stacked.svg => hist_stacked_step.svg} | 42 +- ...tacked.pdf => hist_stacked_stepfilled.pdf} | Bin 5514 -> 5587 bytes .../test_axes/hist_stacked_stepfilled.png | Bin 0 -> 5988 bytes .../test_axes/hist_stacked_stepfilled.svg | 594 ++++++++++++++++ .../hist_stacked_stepfilled_alpha.pdf | Bin 0 -> 5637 bytes .../hist_stacked_stepfilled_alpha.png | Bin 0 -> 6227 bytes .../hist_stacked_stepfilled_alpha.svg | 594 ++++++++++++++++ lib/matplotlib/tests/test_axes.py | 35 +- 15 files changed, 1952 insertions(+), 20 deletions(-) delete mode 100644 lib/matplotlib/tests/baseline_images/test_axes/hist_stacked.png create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_bar.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_bar.png create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_bar.svg create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_step.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_step.png rename lib/matplotlib/tests/baseline_images/test_axes/{hist_stacked.svg => hist_stacked_step.svg} (95%) rename lib/matplotlib/tests/baseline_images/test_axes/{hist_stacked.pdf => hist_stacked_stepfilled.pdf} (78%) create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_stepfilled.png create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_stepfilled.svg create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_stepfilled_alpha.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_stepfilled_alpha.png create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_stepfilled_alpha.svg diff --git a/lib/matplotlib/axes.py b/lib/matplotlib/axes.py index 39292eb7dcea..46ce6b6e55bc 100644 --- a/lib/matplotlib/axes.py +++ b/lib/matplotlib/axes.py @@ -8065,9 +8065,7 @@ def hist(self, x, bins=10, range=None, normed=False, weights=None, n = [] mlast = bottom - # reversed order is necessary so when stacking histogram, first dataset is on top - # if histogram isn't stacked, this doesn't make any difference - for i in reversed(xrange(nx)): + for i in xrange(nx): # this will automatically overwrite bins, # so that each histogram uses the same bins m, bins = np.histogram(x[i], bins, weights=w[i], **hist_kwargs) @@ -8091,8 +8089,6 @@ def hist(self, x, bins=10, range=None, normed=False, weights=None, else: n = [m[slc].cumsum()[slc] for m in n] - n.reverse() # put them back in the right order - patches = [] if histtype.startswith('bar'): @@ -8129,17 +8125,23 @@ def hist(self, x, bins=10, range=None, normed=False, weights=None, _barfunc = self.bar for m, c in zip(n, color): - patch = _barfunc(bins[:-1]+boffset, m, width, + patch = _barfunc(bins[:-1]+boffset, m, width, bottom, align='center', log=log, color=c) patches.append(patch) + if stacked: + if bottom is None: + bottom = 0.0 + bottom += m boffset += dw elif histtype.startswith('step'): - x = np.zeros( 2*len(bins), np.float ) - y = np.zeros( 2*len(bins), np.float ) + # these define the perimeter of the polygon + x = np.zeros( 4*len(bins)-3, np.float ) + y = np.zeros( 4*len(bins)-3, np.float ) - x[0::2], x[1::2] = bins, bins + x[0:2*len(bins)-1:2], x[1:2*len(bins)-1:2] = bins, bins[:-1] + x[2*len(bins)-1:] = x[1:2*len(bins)-1][::-1] minimum = np.min(n) @@ -8159,19 +8161,37 @@ def hist(self, x, bins=10, range=None, normed=False, weights=None, # overriding this fill = (histtype == 'stepfilled') - for m, c in zip(n, color): - y[1:-1:2], y[2::2] = m, m + xvals, yvals = [], [] + for m in n: + # starting point for drawing polygon + y[0] = y[-1] + # top of the previous polygon becomes the bottom + y[2*len(bins)-1:] = y[1:2*len(bins)-1][::-1] + # set the top of this polygon + y[1:2*len(bins)-1:2], y[2:2*len(bins):2] = m, m if log: y[yORZ&fHFa~KpsWU7@A0hug_D2O0P0wJVG0m~4)t_l_e zuUN222%~^O0u~WkWGaL~hJZ{$0wIO~2?p*7z3aQT-ydLqFl#06o3l=G-t#>BJbUlw z_SdcsiVErq002eD({|qgAf*cc^1R#@IP%lY#Ov@PedC0qyBvJs&)$0HCJeXlLt=&6^)758pTQpkk zBXw{aDAkxPYPao_SgVG+=V~_@KR1009|_`9Q_I@4M3`jE&w*^00F>7 zX*mFt_kAi;la}KB;<*hPfEdD-giD}I`c06!D|y^?g-c(Ut8Tu?>rsNaB{kmdld?4S z>GzR&85V3LVz6qh0dRhB+}47A)j3rO0Bknc-7Tv45`ack>RBIO-)lZaPs3QPF|2ru zzVGuVBrDMqtJSevFR=h{#!_?$Pr@0(A}itKUD0Bbk~fKeSw2g}$1nM*2%oE_@7r5k zK=?^h2@vB}n{?K{ZrBiWy-B>yIV>r|ZB5K6Y-xdva7sVH6Kzd6nec(v(rp$pv9wgx z(b3^WvQ3>p9m!m&G9B&VF)@Bj_;0a-=NW4%x{9F|Ti;g}h^b_<)%xm$xw-inlATma zN=l|63C@0tbxWH-p(rz9!z7n?|3yVBYGirK`zC|l$Y;;#3Vm~(qZ-nHc&Jh~(1D%J zoQJXEhXs@~X7SNF=kK>)Dsj+l<>l{eiSyD7AIJcM-PJ3LtB1IqQLEn{|Ic&1#Wr0# z`~sr!<3rBPO9>PttmERB2ZKvmF25bD3>GZS_Vj(bc{F}n<5YIe3HjM*!BAgeQazQd zstXz)%PDK8vOJh-B`IF7W<2B9!kGM-l9|(Sp6D-Z0Jf{T9^eTC-GJ?k?|04|FX%M6R##hl*{GeMqPr)a#hT@`3=Vo~X=%ymA;Fm5kT0;Zwl1BR zn6Te5ujEvQ^uRRG*;{S`Fn~b@22zgcWM^lWIKY*rrCU?;gb<=G$jSU`b&qMsbYSj} z=61zYtuM?-a?hB5&{@h#5VP|>hx_^g?rTAGZF*Fo3BYKO{LW8_&Hjha5%DYxYprw( zARZ`@#fH*SUK(tx8LeT{Gdfu-#{nqo{0ji+46eyS9YI4vg?XsOjB&}9dogv$KT!gC zJZ@uM6i1-0E$-tep!mWp-?R*=a4TEikqYzZf_rHMf z{rDQ<8Y=Q$=tGF~DX?+>>s zy5x(7Tm*nux$H-la5)fCIf;yfAzYJzQ660UjjHZGukRiDqcv)7LuFZXhL|4s?1Bfg zF4$7UP}>9Jd=I6&&&FKv<99Th z8SQgqXIk^{^{^MA$DJ^zeAZ@l|p(ss~T1@ZQOayW25 zrEQVsCqwx?2#WwY#<^V%ebFQKNwwSb0XU~;V;|UL20&89MhX~& zK^;}b_2}-79$~^#%)D5B*$mcOqdhkERp#sn9Bwf7GboIesq*UgA;S}EpiJ;^Dv{hB zexXpy5aM?w+uwy}&KntM2Wfr#_U*=r-#*o!ERr+(YpTx%fB%@dZz5$)Sy`kFLq z#%OGMSpkOW2W#uTI1d)VTkrwLHUkfjAl{FCppzMwQFa54Xq?9@Mx1C`irB(_PR{gJ z;=LP``dcieMCT}o*288Lo4T&6LV?n@JL@5h?L~qt=pvtWM-b1Y$^!5lqOo^H{OUb) zW;y1anGQE4xP(OuYY=)u$C0(NGR)@{lg*#q9OAUY`MdchI_#rf+bUwDTje~QN*7|5 zCopJ1vl|MoVKKOjT*RTZOmc!6&L@AK zLe^Ia{PKlI&AM?8#3ZV5fuFDMXk@1!nyGgC4gj^?)oR2}%3SS>!)wi|RAOBVOgYB{ zVOYVe_>u?HgbZ|t>XXaj!+Y2kMKbITSItlYwFrW(e=O4 z!#a1jkxe)dq@bC}<87M9y&kd1dN3mID4em@91qSTg0UILKuR)me6AmqY zCQyc+0QJ$mYZh^nI50Qb6Kb@HPa2+T6R9{hA~o`PfLi|NBr11pj!vV~cI*umeG7+G zb$3k2&%y>q+1Acvhbo0kXjRghA0-FW(zT$(XgxN52R2z4H@y3!74@J|Sl%R;QW|tU z_u7JP-3H)cJ=7^<4yAq#1b*=bh0MQKXmtIofKFbo5oiXS`(WZW_=r6BsAz?cLT3s# zTP0{TS`51}88g^n=~gM8pdSXUCjrfjXgm96wSX)l^_?^_Xinfij`zI#L70EICDu!m zdq_B)8$K7)u;#=5O1tD*2&(I#hf~?kwC27B@37N;!i75STyvV5pxZ%*DXW9eQr`iH z7O`Scbi7#5FZk_1K`-nE4aDX-IKev74@&~^P?--(XKSQF8Vov%!gZ669YB||C)!kl&xo0+8J8-X&;BudOuWRv*lO{`QSrO=)?Dz;O)p-&=xYfb=dFs51%HWA(|wm+!dMf7SpQI^qN^_0( zV9eMuH7dGYsjCACL-|;m@xj=qQC@j6gZd`oZChPyH4sQeDgk$!Bz`*oThU_9QMWSz z8`yyHb<4fRlmAffsWRt}J09eahG@R;nzsyC=Tk-s01ou|?e-QU`IAxBW_-ljyy*UR z{e$zxxue_{yiuK+daYjtTtwT|n4Tl`<90XtbsF*fg;M6No@yP77Av|x z7F){lBt(yBQA)Ch5S}Cn&s+UE_n!MZzw_J9_nhA`cIDbxQmyDD z<0B7{ydn}6p&$~UK+^Q-2zfzdhyWpT_&7gE;*XGB`Tl}11O*H{WX24VKxszBs}pc)$Q07f8hj246{JSEKX5Fzpv z@aBNYz}o^TUmO;~mkPwbkqT4g{4-`iTfqlhZY+uHB=8gQZ6z|GIuwsF83>(*LLGU6 zFiE)77x)GGfu|4zT?Hlu3IZu%2%Gr!O-cB!(9up51e}DB?Sg=%T!F8|4~%pai2d;Z zgbJfUI6DlN3i!b!+1{*_8u0@}yR0piw5?T8LFwthc!oJ=a?L-e-#eJwH1E3c@kf{9 z4H{a!*o~E!2gj{0n--&zHZzX4d}x}#?{&kJ?QzfV`Pu&4^FmeDf$~A8;iCv^E+&Nm8 zE2I^ct*F$=m*C}>*=Rn#|?icTevli-59wkjcp#OAG77fW+b4xi?#0N-X)bYx)8D; zB#o>(#Lg)pdAep}Wn9U{w(vbX-V5e|?bO94Xz(4!-~g+8cG-Djn~uf!-FutXV4Jx4 zQuv!p%d0QVIjIbb!wh6ArR+g!!f7MFws+${d3bc~``R&s$qO8Mac5D@&VhB8+p^wB zO|lx^PRr@;u}3U>mi=Xw0zNOFZ@IrDh`qM`Y2K*vySeqe$T4#&_<>8S7hYhgoJq;= zu`4YtkNJCDkWTY^I`_+w%@+$b<1Jj$d6dKZO9yw??)|d6=CIAC*Ml^ye(P9xD|;dH z33-aKAbocUv6MawMqr(Uv$Nsd)(;1w)Qnb$ zJJ7dYx$IPI`R~!s?yAeWE}UvC4C@}Tsv%=>fOzZ|HHQc0!ypv(E|6YOA{Gu@VN5nf z0aR278~s~&Q=@ank~DC>u5}kWS#LspP5sNMGJeVo zwd2~(X8N+hJ5>f9f3jSb+-t4~S7G6;Fw~?d!(-Z64r||V}#W|&8IqQXm+kE{>Wu2EDH*bh99pSoXRq~MB zlz8a2 z>`SxI3Jx$n7qx9e$&I}QS^Tow>9;$+44&-~o%xfgwtChKz4nJrgJAT*J;`NT)=zXA&zqa^mq`xICShP^-u%q1Mpt5ARZiT; zUpO&PtJ~Az{_QZ`>M`_b`gzmYS#uWett`KyX+HRK@%56~3&!M4*B%ja@jmDC-q+8V zjdgz%TzTKMEbL@4MbEvx`IKRT)2S{dxv9(gY0IY`wd^bp{hv5cdBgqH=E0(T=fBxo z&J8W0XmFzsc@K;=5$-olE?8}d%zF^xQWSl5>Il@WksrTtV7it?yj%OA)J$*etQ~Lb zzSo&2#LL6iHb=STedruK#U&yl)cSg*!TX=+^-ni7_V;=@ZM7Luf@r9<6;E(+<=*&; zN7a2@o>xEYe2Mdb&HA&~y~hF_C~wZ9dMjMbb|L&SFg;95Bp0Khqal79Bc0c-uz z7o89Px+3_-G``MPTlZ^88j(5W)n>08W=wS)e%k6{{shgV;l{5k(vWoXwv5!1`L%bN zyhFyAEL)?`^nNMYItIg^tUF|tY`gY~@!Qmx@aUHpTnuD^2GWRuI-GLvA%R8uPVR-% z_a`{3HhqmPePj77V@F3ty5T3oy{&Jj6^Nfq4vd&kE7e2m3+PuzYv|4%J3Vstp^&D6 zhLyMIBkF~k&bw5PInUfOOvQV`vL$O?ALFte>b7O=mlR*^96n3Mt?(zVQ9kzl(lzw& zvC(P%xnM3;tL4#1&&Mh)D0K`(dDZr4#hPd*0>EY`=#6U-|HKiV$P3ajpXoT;7SZ9?}x zBC$6ab*q@>cX@Nhwo;ot3r4SW8fkG%?>g;T>mugKsRc-o%viUnOocn}?x=+8-kDqS zlM}8;$7Yjus4w-t{mO9uZ|lsH8iwEp8vZP*dYt#-V+4~!e)l-LNVZC=#o@%|ms!yk zF~@AjRlRqdw$gs$`L~C3b%ev!d8zvnlc!qytU5F6>wbZGS9f_$$7fAFQ_m?s@gF=D z{}WWBvC;2R%bMpPRtI}ajoH~*S#O=B={b#W9XZO-j+qF`oI?j!iVj z*bh>#rupyA2L<{!kAGvuIMn4XU0xJ_M_QZalkZ|wPQF&Sz&&Hp!%R;522KE(33V(WO4nG4H>x4 zrlGr3%r4{&-Ml;d?(ZAdC-2DpS6%y-gKs@9d2QyqdU)I)C==e$zT23%RfpDEYY@6b zXT?nGSDEwCQ}YdmJNd`7KSX&QwLom$wTBfP{~FuL-jkZ`cfSak_$2+ljVASd=Lu1^pboym-R~D)^Ow_#<(;f7@@}JEVe@-#Kqhx={WcwI z)00=8@6|hTxaY|Ae53T?Cef0@?MYQt+3WS{BcifT*ZBUcer0<1-#w~UDj5d-14@M@ zM_)j}Ii4#B^OcH1aETP5%4-g?Gd~y{)on$%{G_l*AmzJ(n!=JN3FeDQWLTa!@o}k$ zC>yLO6u8E~Z{HIrA8h$y0-}uhzr`#T`QZU!2vuHpk=??5aH1@O#TgCM7y*1KEUW+r zQD!MB5V=%4ku(g4EC@xekgdFmv81x-h$Tv60J$s{!baJM7l}Mu45|-UV8M!sD-sF? zusQ;@jRyiYV{(*0DnZB+F)$imDM2t4AqzqA1OAI5KwlUz6k~wnx5z&LhvMYrW1mof zsANZeuR17(!F8ZGu0f9~ybV1KYcE1Q!i&F98kBOlAb1fN4hty%FocGZ$nJCHI$!{- zdbNP=PzoU-_Wy~W6JJL79>kjtOy%%Hdc`tnU^aVD6pMUq#Qs47IJu2nXXr>JvlOV{ zfiNhP{{@l$TRAi;3!#Gyq%$Z8i^f72GzN){Q4l6LC7?_Up@Cf)5(e~y-yuJZL6x^O zCglGWkrdx)fEN;!p&*P#MW__$0FZPH77)Z{AxtKC2Q@SXCTBtd>4dT|5+H;D(g?$V z5C#olg3M#GfC3co3|sh}1_&JSnP5DW$!4)ZEAN9XVGNB)f-O`68U={~RxTWi0mJ1o z056!Ac&5>TBUl7sOg7Q7nLuCA&!D2fK>56MFfWDz#{eLQ-!Ra!fU{sr5DNJigcD#3 z=O=;&9SC#)jwPIhfiZ+r6w1Mt$TT<;9llVYi=f)jG}rVHng3Xbv@kX`l#~q6Hx%DHI_j(3yYMEDxy1CFk456T4fBHn=vm>UWrET>?= z??6|W13w`)3&aoR1%OdyQsji9g-!u+ClM`tRw5$S^6!wRk6>QFsKVB(5Az^gD=-gY zCsCjBtlm7 z_@0kKVSqUP&_`ne|NhX2Qu@tHMZuE#fse)pOY6rzCd}CH<a6~m`7`Y}Su5w>oX5?%=Y0Fy zd!K8cy1Qtt*suZspmo^Q`6vKOi~&&d)?5l}@?$SX!HatIfy2i&;U`fu4j`v_aNe~w>;wl#mT#qdnj`fJx`zgzy@ z5!1JNxAtC6ziyS`?|c!hhb&w|E%wsczdh~A_iub(4e8dn_TC8f*i`=T=82ROFOprD z(SB|NGITeISY=Nv$`gcIZ^(diH7=15;6ws#)inXo+3W;Bsy;#ufFCt=VB?`w*tSbe z9e}I4#sD~d1rPvy{=Rg*zT>ZadKb4E2|#GY3pq#+v9ir4+r|3uVvb2|?uF;0ZEbV= zF98t6Tz-9h;RibXq)l16CVK(swI0@K>3vk9Z=?$staa-_shPcQ#oun3FI!bG9dVv8Pu5-B&$5j_GB=XkK)hjhb;JcE_BMRd1K|2+2N@eL3elA{rmTmhfG=%km)kiIZy<@|a9t|b81Jrmdm}TPmvDsX zy%B&f8}}G{S?;uSZ+z0Myoz-1di83ApnkDT{=i!rR3Wr9Kv<Erjr4%RNs+=eBiqEqub&6!PPN-HnMs>0mSi_&Z*Bz-T~J(Mme*M zZEM~|cZlg3$H5^Xty=ltSIy`%x0y4jrR`w@=U`ARZ4pN0l3?yzl?U>&Ccn-GpyAWn zr33k7Kk3Z(3y@JwOsoolgFWRo|S>L4ZKrT20joa*=0B?1* zkV9FBvnN81FfAbetS!r14%xj1{f^6RHL$Jbgciu~t1iGO4(Fv*;d~&g7;O5N0M30{ z2tXmduFj9o=d&YVAr8+UG;taV>7tqV@%-ZZX1UxGkSkiS5F6$}T`L>x?d@sx^}-J4 zr;qm-JJf7D0L8?~&NZX^JFJs3p?av(`B^yB-fj;&H`?Q2-$KFp7`bbLhLT#%q(fOj z?ba>r#I^)p>EYK)KVH@iUJgT5VfC^!|T(`*W^u5bViCb`pUW38?3_sh%W*6kBI#@+ZHPmam5PIpfS2|*L2`aC{3 z5jD*?Gqv{3j~BY{~&xJ}IbQRzp5WGy=H>2({`aW}H-;70;C#+6;z4 zosZEmj!N%_m5;p~Jvn+wU*p}%DWW$&P6J@L+Bj-Ql9wlTQPA0Y%BrNB;JY>bne{~_ z3_RfJ$z(ER^D1RMyM_+moSU``Ig45XB6cFwrWRG%Z-e z9_2J`tqUFm`m1Y35xUDMZL=sfkZY=UYsnwm8s&alzsx%nM_@?v$@kLI(okdsNS$AP z-A>G)N_Anha-&wP`_=P7bJE!?b}GE7aimKixG$IX$Q>GKf;vJqYF~WR8zq1ANhs5T z9cw{9SzYjSjdAq3iHnnqii;n;IV3u|@`RUHreK=m6~KvPspw#^D971GVxxu0%nd4DSVZMk>jmD+oPgvHoqE$qUYe|Oin8u&yh9{K zbkcA30}s9*ouJz}`iUT^ldc>lreNp+^vcR(VzF4&Li>xlD>9#)r|2o0V}Gn7^!G&P zZaw|Q(@cXSF)Rv3Ot^}AH5ybQcx?4jGIZ4UlJ-B{@U!MBkNuH+t|{Dn%P{w!h$QIu zFfe7I5mu(@^VzjfMk3w6hyMA!G0FdJWwn_08gAGmA*0;VF^)i8Q>P?ODy*}gdwr4> z-Te(of&lKi#!gbm1@gX9B1M#raj7MHdCJaxP5`M{5Y*|3zs-8RC!%%HzXIdmISg6- zoQ|X2kKDt?MMlaU)b?`;-izKfGB=~{wH=mEhd?BUU(#g9|F8jiZ0M1_%WR%C3damH z()u9{LNP}XGf4bJ)&6#QTj%`z{5^g?`AyJj07i&VxQ*ZQGL7-`BDLSWat(lz6zFjp zZn5TPODU8^V=t2Wvy%Nts?Rv$spB@-Dn|;hJb>5Q+Im^8QYyz-o-wn8hqnHn9BBFZ ze0y1){tvMpyDv$K=|a}Rys}TvqEyuK=yU-oW#jyC7{T1~l7ucyG58_YN6Ol%jLkIa zS%BviQ_i3KZT)$>Wb;NBCpcsBykI8bdPP8ridMYu{LKwWkh)`bFegAX-p@|TtazZ_ zRQPOzab!>Z{oytu4?@vDZnXPw#&XcGMFo?COvEXjo#sc1J3JgEgu=^Ppw{HVQ>N5S zQNL`$&_G!n6D<~0Kw+r~pXQc4(rfEVF3Q$`YM>VvKMaYJNg@`dKaaf7-0`sSY2TH2JGb=Du$Wc-G)FPim)cok-ofgy)*sjPF`y zlr+`;l6|JHVul)Bg`ZpMjGD9ExNLJ3h6-)A408&T^fR&Z)Pqfcux``RKs$-_?2eN}d0<@*`=HU4sEN}JZ)la_hcHpM<4lbj z=Els+$J08h0_?@w>23Xrs3U}Z)xz}1iMV)tQrjthmb`jCXY(&-XV9ztuO37$Aj$e) W-1E4%Sql9UIDF9EnR+1b;@<%y9afkC literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_bar.svg b/lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_bar.svg new file mode 100644 index 000000000000..f4c985eebbde --- /dev/null +++ b/lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_bar.svg @@ -0,0 +1,661 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_step.pdf b/lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_step.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ec8ae1af2c8939cc97ee63791e4cb473fdcca6ce GIT binary patch literal 5590 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 SBp3zY=jtUx9g3Dsz<&cKf?f6i literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_stepfilled_alpha.svg b/lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_stepfilled_alpha.svg new file mode 100644 index 000000000000..9e4868c58d7b --- /dev/null +++ b/lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_stepfilled_alpha.svg @@ -0,0 +1,594 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index 665c6c57d393..e103abcdc91d 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -881,15 +881,42 @@ def test_errorbar(): fig.suptitle('Variable errorbars') -@image_comparison(baseline_images=['hist_stacked']) -def test_hist_stacked(): +@image_comparison(baseline_images=['hist_stacked_stepfilled']) +def test_hist_stacked_stepfilled(): # make some data - d1 = np.linspace(0, 10, 50) - d2 = np.linspace(1, 3, 20) + d1 = np.linspace(1, 3, 20) + d2 = np.linspace(0, 10, 50) fig = plt.figure() ax = fig.add_subplot(111) ax.hist( (d1, d2), histtype="stepfilled", stacked=True) +@image_comparison(baseline_images=['hist_stacked_stepfilled_alpha']) +def test_hist_stacked_stepfilled_alpha(): + # make some data + d1 = np.linspace(1, 3, 20) + d2 = np.linspace(0, 10, 50) + fig = plt.figure() + ax = fig.add_subplot(111) + ax.hist( (d1, d2), histtype="stepfilled", stacked=True, alpha=0.5) + +@image_comparison(baseline_images=['hist_stacked_step']) +def test_hist_stacked_step(): + # make some data + d1 = np.linspace(1, 3, 20) + d2 = np.linspace(0, 10, 50) + fig = plt.figure() + ax = fig.add_subplot(111) + ax.hist( (d1, d2), histtype="step", stacked=True) + +@image_comparison(baseline_images=['hist_stacked_bar']) +def test_hist_stacked_bar(): + # make some data + d1 = np.linspace(1, 3, 20) + d2 = np.linspace(0, 10, 50) + fig = plt.figure() + ax = fig.add_subplot(111) + ax.hist( (d1, d2), histtype="barstacked", stacked=True) + if __name__=='__main__': import nose nose.runmodule(argv=['-s','--with-doctest'], exit=False)