From 7df0313b010d211997cf391d1bee38e194db5618 Mon Sep 17 00:00:00 2001 From: Paul Hobson Date: Wed, 14 May 2014 00:01:57 -0700 Subject: [PATCH 1/7] restored default boxplot style and respect for the sym kwarg --- lib/matplotlib/axes/_axes.py | 116 +++++---- .../baseline_images/test_axes/boxplot.pdf | Bin 5231 -> 5259 bytes .../baseline_images/test_axes/boxplot.png | Bin 11065 -> 10918 bytes .../baseline_images/test_axes/boxplot.svg | 220 +++++++++--------- .../test_axes/boxplot_autorange_whiskers.pdf | Bin 4786 -> 4814 bytes .../test_axes/boxplot_autorange_whiskers.png | Bin 6749 -> 6949 bytes .../test_axes/boxplot_autorange_whiskers.svg | 82 +++---- .../baseline_images/test_axes/boxplot_sym.png | Bin 0 -> 1735 bytes .../test_axes/bxp_customcap.png | Bin 0 -> 2574 bytes .../test_axes/bxp_customwhisker.png | Bin 0 -> 2066 bytes lib/matplotlib/tests/test_axes.py | 42 ++++ 11 files changed, 271 insertions(+), 189 deletions(-) create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/boxplot_sym.png create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/bxp_customcap.png create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/bxp_customwhisker.png diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index 7ca75dce39a4..d1f0310c228f 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -2883,18 +2883,19 @@ def boxplot(self, x, notch=False, sym='b+', vert=True, whis=1.5, meanline=False, showmeans=False, showcaps=True, showbox=True, showfliers=True, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, - manage_xticks=True): + capprops=None, whiskerprops=None, manage_xticks=True): """ Make a box and whisker plot. Call signature:: - boxplot(x, notch=False, sym='b+', vert=True, whis=1.5, + boxplot(self, x, notch=False, sym='b+', vert=True, whis=1.5, positions=None, widths=None, patch_artist=False, bootstrap=None, usermedians=None, conf_intervals=None, meanline=False, showmeans=False, showcaps=True, showbox=True, showfliers=True, boxprops=None, labels=None, - flierprops=None, medianprops=None, meanprops=None) + flierprops=None, medianprops=None, meanprops=None, + capprops=None, whiskerprops=None, manage_xticks=True): Make a box and whisker plot for each column of *x* or each vector in sequence *x*. The box extends from the lower to @@ -2914,7 +2915,7 @@ def boxplot(self, x, notch=False, sym='b+', vert=True, whis=1.5, sym : str, default = 'b+' The default symbol for flier points. - Enter an empty string ('') if you don't want to show fliers. + Enter an empty string ('') if you don't wantshow fliers. vert : bool, default = False If True (default), makes the boxes vertical. @@ -2947,13 +2948,13 @@ def boxplot(self, x, notch=False, sym='b+', vert=True, whis=1.5, An array or sequence whose first dimension (or length) is compatible with *x*. This overrides the medians computed by matplotlib for each element of *usermedians* that is not None. - When an element of *usermedians* == None, the median will be - computed by matplotlib as normal. + When an element of *usermedians* == None, the median will be + cted by matplb as normal. conf_intervals : array-like or None (default) Array or sequence whose first dimension (or length) is compatible with *x* and whose second dimension is 2. When the current element - of *conf_intervals* is not None, the notch locations computed by + ofnf_intervals* is not None, the notch locations computed by matplotlib are overridden (assuming notch is True). When an element of *conf_intervals* is None, boxplot compute notches the method specified by the other kwargs (e.g., *bootstrap*). @@ -2990,6 +2991,12 @@ def boxplot(self, x, notch=False, sym='b+', vert=True, whis=1.5, boxprops : dict or None (default) If provided, will set the plotting style of the boxes + whiskerprops : dict or None (default) + If provided, will set the plotting style of the whiskers + + capprops : dict or None (default) + If provided, will set the plotting style of the whiskers + flierprops : dict or None (default) If provided, will set the plotting style of the fliers @@ -3030,9 +3037,10 @@ def boxplot(self, x, notch=False, sym='b+', vert=True, whis=1.5, """ bxpstats = cbook.boxplot_stats(x, whis=whis, bootstrap=bootstrap, labels=labels) - if sym == 'b+' and flierprops is None: - flierprops = dict(linestyle='none', marker='+', - markeredgecolor='blue') + if flierprops is None: + flierprops = dict(sym=sym) + else: + flierprops['sym'] = sym # replace medians if necessary: if usermedians is not None: @@ -3069,24 +3077,27 @@ def boxplot(self, x, notch=False, sym='b+', vert=True, whis=1.5, boxprops=boxprops, flierprops=flierprops, medianprops=medianprops, meanprops=meanprops, meanline=meanline, showfliers=showfliers, + capprops=capprops, whiskerprops=whiskerprops, manage_xticks=manage_xticks) return artists def bxp(self, bxpstats, positions=None, widths=None, vert=True, patch_artist=False, shownotches=False, showmeans=False, showcaps=True, showbox=True, showfliers=True, - boxprops=None, flierprops=None, medianprops=None, - meanprops=None, meanline=False, manage_xticks=True): + boxprops=None, whiskerprops=None, flierprops=None, + medianprops=None, capprops=None, meanprops=None, + meanline=False, manage_xticks=True): """ Drawing function for box and whisker plots. Call signature:: - bxp(bxpstats, positions=None, widths=None, vert=True, + bxp(self, bxpstats, positions=None, widths=None, vert=True, patch_artist=False, shownotches=False, showmeans=False, showcaps=True, showbox=True, showfliers=True, - boxprops=None, flierprops=None, medianprops=None, - meanprops=None, meanline=False, manage_xticks=True) + boxprops=None, whiskerprops=None, flierprops=None, + medianprops=None, capprops=None, meanprops=None, + meanline=False, manage_xticks=True): Make a box and whisker plot for each column of *x* or each vector in sequence *x*. The box extends from the lower to @@ -3132,14 +3143,14 @@ def bxp(self, bxpstats, positions=None, widths=None, vert=True, If True produces boxes with the Patch artist shownotches : bool, default = False - If False (default), produces a rectangular box plot. - If True, will produce a notched box plot + If False (default), produces a rectangular box plot. + If True, will produce a ed box plot showmeans : bool, default = False If True, will toggle one the rendering of the means showcaps : bool, default = True - If True, will toggle one the rendering of the caps + If T will toggle one the rendering of the caps showbox : bool, default = True If True, will toggle one the rendering of box @@ -3150,8 +3161,14 @@ def bxp(self, bxpstats, positions=None, widths=None, vert=True, boxprops : dict or None (default) If provided, will set the plotting style of the boxes + whiskerprops : dict or None (default) + If provided, will set the plotting style of the whiskers + + capprops : dict or None (default) + If provided, will set the plotting style of the whiskers + flierprops : dict or None (default) - If provided, will set the plotting style of the fliers + If provi will set the plotting style of the fliers medianprops : dict or None (default) If provided, will set the plotting style of the medians @@ -3215,37 +3232,52 @@ def bxp(self, bxpstats, positions=None, widths=None, vert=True, final_boxprops = dict(linestyle='solid', edgecolor='black', facecolor='white', linewidth=1) else: - final_boxprops = dict(linestyle='-', color='black', linewidth=1) + final_boxprops = dict(linestyle='-', color='blue') if boxprops is not None: final_boxprops.update(boxprops) # other (cap, whisker) properties - if patch_artist: - otherprops = dict( - linestyle=linestyle_map[final_boxprops['linestyle']], - color=final_boxprops['edgecolor'], - linewidth=final_boxprops.get('linewidth', 1) - ) - else: - otherprops = dict(linestyle=final_boxprops['linestyle'], - color=final_boxprops['color'], - linewidth=final_boxprops.get('linewidth', 1)) + final_whiskerprops = dict( + linestyle='--', + color='blue', + ) + + final_capprops = dict( + linestyle='-', + color='black', + ) + + if capprops is not None: + final_capprops.update(capprops) + + if whiskerprops is not None: + final_whiskerprops.update(whiskerprops) # flier (outlier) properties - final_flierprops = dict(linestyle='none', marker='+', - markeredgecolor='blue') if flierprops is not None: + sym = flierprops.pop('sym', '') + + if sym == '': + final_flierprops = dict(linestyle='none', marker='+', + markeredgecolor='b', + markerfacecolor='none') + else: + final_flierprops = dict(linestyle='none') final_flierprops.update(flierprops) + else: + sym = '' + final_flierprops = dict(linestyle='none', marker='+', + markeredgecolor='b') # median line properties - final_medianprops = dict(linestyle='-', color='blue') + final_medianprops = dict(linestyle='-', color='red') if medianprops is not None: final_medianprops.update(medianprops) # mean (line or point) properties if meanline: - final_meanprops = dict(linestyle='--', color='red') + final_meanprops = dict(linestyle='--', color='black') else: final_meanprops = dict(linestyle='none', markerfacecolor='red', marker='s') @@ -3365,13 +3397,17 @@ def dopatch(xs, ys, **kwargs): boxes.extend(doplot(box_x, box_y, **final_boxprops)) # draw the whiskers - whiskers.extend(doplot(whisker_x, whiskerlo_y, **otherprops)) - whiskers.extend(doplot(whisker_x, whiskerhi_y, **otherprops)) + whiskers.extend(doplot( + whisker_x, whiskerlo_y,**final_whiskerprops + )) + whiskers.extend(doplot( + whisker_x, whiskerhi_y,**final_whiskerprops + )) # maybe draw the caps: if showcaps: - caps.extend(doplot(cap_x, cap_lo, **otherprops)) - caps.extend(doplot(cap_x, cap_hi, **otherprops)) + caps.extend(doplot(cap_x, cap_lo, **final_capprops)) + caps.extend(doplot(cap_x, cap_hi, **final_capprops)) # draw the medians medians.extend(doplot(med_x, med_y, **final_medianprops)) @@ -3390,7 +3426,9 @@ def dopatch(xs, ys, **kwargs): # maybe draw the fliers if showfliers: - fliers.extend(doplot(flier_x, flier_y, **final_flierprops)) + fliers.extend(doplot( + flier_x, flier_y, sym, **final_flierprops + )) # fix our axes/ticks up a little if vert: diff --git a/lib/matplotlib/tests/baseline_images/test_axes/boxplot.pdf b/lib/matplotlib/tests/baseline_images/test_axes/boxplot.pdf index 6603608c683246796da6e8ad0f3d061b0c176fa0..8eda82a6fbd8ff5fe7aaf74dc535ccced71ae2f6 100644 GIT binary patch delta 1882 zcmZvcdsK{R9LIM?qh=zNB2=DAs-y8<=AEXSlvG9vP0F1yy_#Dy_0CKwo5_|t(Z1V; zU8}WQi0zD$p%m)MP}leG6|j#GXsQ$QADlMQh_ueh@8lP zNd-fwZ-Ymi?Mm)Bwb6{@6NY#Py%K8$Z0C?}>*L-Y8etTYWFw z+P$TnR2CG^IK>z?<=u2B^`r z&F>EWA@0FRhGKi>I{6AgEq`BT!07E&Q_n3HZ#o^jGQ&0Hw?ek02Z<7#2sz-gUD%r4 zb-rbi$-Q6YJ||*{&q}UzTT$n;8_tKWbTaMylBe7hY<|@r&#HAT=7vlY@sZJIcki_2 zACA-KpYZ6s9%&t!CSc$l2^@U(#Vda`#I};jZ+f#=G>lcu4;y(NDMTN}x=&5+`%vB< z5Udn>PS`rPSXUUjH1@3Ic1akkE`*ehjhnc=G!QLr zhOKW6^5TTo^5Tv+a)U9(WV-wAp|9L++JMK)Yo^W}zg$Q%+XHX&CAl8So-(nkBZFEXjR99@ZW2858TgP%~*E*Ln*8Ep+9h{ zJd+pf$_-z7BG24^i3wY!*)3+cva?zGLn2ef8yI-R)X0H?-#Wv6Vi-hAntF54+`W zd}?+0nb1p_!OrZ?WwzBGxb1rCo^{-qM}*DQjw@^QPo^hHFYX^WlBg|$^PgP&gGk8MpBWZLrgJ7w z{eg^1iLh$T;yDOIegRhLW#sy^|Ks!eyyaE#PAU07Ymdw7LbMK>!kI@w6nm zk7%VhRRee^fP`AHQYMK|r7CgSKqsf&xhOAy14W9{KZX+UV7iPd(Fn|ntCbQs4v;~W zg|t~}fC%V90i;$@JZNy8gA;0i!eq65s10fnREe0J=-})a837PVFgZ{J@(H%0FiZwI zD7^>ogVtsZfMR7S8n6T)uqEg+T4i-qeF%BpVTvOL^AQY&VT{k?!U7){_96WoG1A)6 zi(KXywVLXWGQu!W0ghz>V?4ULFBzYDVP7zePbK`43I4|~2qkSs$Lj-!xKo*^+xt8O z8YBoD!UA~IOZ(gpLow=bKW7M!YUE2MKn6>S{iH_}9@;mG4*ePB@rRxdpXvuVMYA!O LWD7e&2b&bAFrsd;IdF zjJxSH#3)AT02O5Egd&|pM*AoRSUAerfgKThw11jA3?;rmwg`D=U$nj#07qvngf}EJ$in_ z4cp@`z^i2Ylz~qp^RI+<$QfTaWhGzvp~6mBSpIWO)%>J(QH=bju}yoDclO$Qciv4m zb2&byN6tCd4)RZ$9{P8MI%pT!9zOxwI`<|e843%o*EY)q1Qhz%*ZxtaiwQ#aSs-Ogig=-Qjf8>*cjjJ>KaW2DLG*EX)5 zmeSTRylINmqtrIned8~|yH~%MthzndG<%-eb(6W)uLM@aOm6&foL9V}prb-m{k6}& z?=DZ@ZD6A#9^daRs!i;87FkR`4VVKBE^!B1!^~wSFEYlnLrU%*Hu6eRPyUHZ!mU|} z^o*SD)Ah&BioH&Jpu88mvi;baYo(^5dxUJN=kw0m=Rv&bkB~yTxG_H59BdkIY}vtp z*XyNB)$FLe0Quze{X56Et%%-RDMJKzMB{c{GCa6oG=E=bbZow0OuV1goH2n)cKb$< zmy^)VERM>H7MChbd(SjScnc3KH!(&o$a9U-lw=k#Y>jk1KVK@8Ufh#$a^;QQsHt5U z3122G4N4Ep^-Xk6eyW*0b=$Fpb!UC^Q*QU3>~`bbPpLfI(l;x+UsRdXr#W8Wwd3KT zI>V~$+@}70-#+nnuWGIOs{63WGmgG`*MdiX1~D|Yv)ii!g?ieOR>xX*-DWj!;i7Fm zx@bXY&1JtU*UcppYey{K(tgRb_42y>8KL6U!CNMq8@FQB?blno&!4^1*U{$Ne{1Wp z>b7nCn^Oc6pR*p^PI++)thHSyKN;SitA0#tEyNZ`o{5cKTiaVMw+s zjQD8!V$zdEuQ@ulaFM)4%5{_U-Ecb?pmv#5pnQ3*@a&yjaCE$4mHCr%-IZucp!jJa z|5>(o`Gqw}c{T$pJ=Wx%49fhqSm`3|8tAL9Z8B7C8#8lY_%q+5m9TpReHg}qPPRB) z;P3<iPi$bh#H0KFV1L?URSB26dP0-UhO0=4jOI4q0K zq_$Wt(Zp)hQVPMgBCHA!PHi_p!xb8>&H@1#0;8S4NCXwAr0Ung!so*>Wa`X8P58$h z9E_lIB!gK5n++%jsY+9)E=F)B#b7ZkLNt@qN-fF~KrlHl%4wn(D$vc~6XR-*Y0ZHZ{h|8pMBXkm_LK>oyDM?GI z5Gx6f;8m!c*dqc~kQz0>Io3|qDiRQw)z-;1Bnfct;B7gD;=#sI{8_kFHbX4ctWWc= z)S^-ez%31;A;cRP{y#7nKU(P%rd~?5OhFRki|j8b{a0V;sJHZT^!!-x2o1oh6$#3Pd*c=w*yM{a91mfc(hzUpj27ghnyZ`_I diff --git a/lib/matplotlib/tests/baseline_images/test_axes/boxplot.png b/lib/matplotlib/tests/baseline_images/test_axes/boxplot.png index f17404f5ad484eed914be7dbad3331bab2528d1f..22cae58cb7fbfebb4d4106a812e01fe84d4d315c 100644 GIT binary patch literal 10918 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 literal 11065 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 G?f(E}<3XAL diff --git a/lib/matplotlib/tests/baseline_images/test_axes/boxplot.svg b/lib/matplotlib/tests/baseline_images/test_axes/boxplot.svg index e123c4a2db1c..315eca77e663 100644 --- a/lib/matplotlib/tests/baseline_images/test_axes/boxplot.svg +++ b/lib/matplotlib/tests/baseline_images/test_axes/boxplot.svg @@ -40,17 +40,17 @@ L166.86 195.55 L166.86 209.328 L175.23 216 L166.86 222.672 -L166.86 236.45" style="fill:none;stroke:#000000;stroke-linecap:square;"/> +L166.86 236.45" style="fill:none;stroke:#0000ff;stroke-linecap:square;"/> +L183.6 256.32" style="fill:none;stroke:#0000ff;stroke-dasharray:6.000000,6.000000;stroke-dashoffset:0.0;"/> +L183.6 175.68" style="fill:none;stroke:#0000ff;stroke-dasharray:6.000000,6.000000;stroke-dashoffset:0.0;"/> +L191.97 216" style="fill:none;stroke:#ff0000;stroke-linecap:square;"/> @@ -73,11 +73,11 @@ L191.97 216" style="fill:none;stroke:#0000ff;stroke-linecap:square;"/> M-3 0 L3 0 M0 3 -L0 -3" id="md4acab13e0" style="stroke:#0000ff;stroke-width:0.5;"/> +L0 -3" id="m459c79e89c" style="stroke:#0000ff;stroke-width:0.5;"/> - - + + @@ -92,17 +92,17 @@ L390.06 195.55 L390.06 209.328 L398.43 216 L390.06 222.672 -L390.06 236.45" style="fill:none;stroke:#000000;stroke-linecap:square;"/> +L390.06 236.45" style="fill:none;stroke:#0000ff;stroke-linecap:square;"/> +L406.8 256.32" style="fill:none;stroke:#0000ff;stroke-dasharray:6.000000,6.000000;stroke-dashoffset:0.0;"/> +L406.8 175.68" style="fill:none;stroke:#0000ff;stroke-dasharray:6.000000,6.000000;stroke-dashoffset:0.0;"/> +L415.17 216" style="fill:none;stroke:#ff0000;stroke-linecap:square;"/> - - + + @@ -131,85 +131,81 @@ L415.17 216" style="fill:none;stroke:#0000ff;stroke-linecap:square;"/> +L0 -4" id="mc7db9fdffb" style="stroke:#000000;stroke-width:0.5;"/> - + +L0 4" id="m5a7d422ac3" style="stroke:#000000;stroke-width:0.5;"/> - + - + +M31.7812 66.4062 +Q24.1719 66.4062 20.3281 58.9062 +Q16.5 51.4219 16.5 36.375 +Q16.5 21.3906 20.3281 13.8906 +Q24.1719 6.39062 31.7812 6.39062 +Q39.4531 6.39062 43.2812 13.8906 +Q47.125 21.3906 47.125 36.375 +Q47.125 51.4219 43.2812 58.9062 +Q39.4531 66.4062 31.7812 66.4062 +M31.7812 74.2188 +Q44.0469 74.2188 50.5156 64.5156 +Q56.9844 54.8281 56.9844 36.375 +Q56.9844 17.9688 50.5156 8.26562 +Q44.0469 -1.42188 31.7812 -1.42188 +Q19.5312 -1.42188 13.0625 8.26562 +Q6.59375 17.9688 6.59375 36.375 +Q6.59375 54.8281 13.0625 64.5156 +Q19.5312 74.2188 31.7812 74.2188" id="BitstreamVeraSans-Roman-30"/> - - + + - + - + - + +M12.4062 8.29688 +L28.5156 8.29688 +L28.5156 63.9219 +L10.9844 60.4062 +L10.9844 69.3906 +L28.4219 72.9062 +L38.2812 72.9062 +L38.2812 8.29688 +L54.3906 8.29688 +L54.3906 0 +L12.4062 0 +z +" id="BitstreamVeraSans-Roman-31"/> - - + + @@ -220,33 +216,26 @@ Q31.1094 20.4531 19.1875 8.29688" id="BitstreamVeraSans-Roman-32"/> +L4 0" id="md7965d1ba0" style="stroke:#000000;stroke-width:0.5;"/> - + +L-4 0" id="md9a1c1a7cd" style="stroke:#000000;stroke-width:0.5;"/> - + - +M10.5938 35.5 +L73.1875 35.5 +L73.1875 27.2031 +L10.5938 27.2031 +z +" id="BitstreamVeraSans-Roman-2212"/> @@ -307,16 +284,41 @@ Q19.5312 74.2188 31.7812 74.2188" id="BitstreamVeraSans-Roman-30"/> - + - + + + + @@ -327,12 +329,12 @@ Q19.5312 74.2188 31.7812 74.2188" id="BitstreamVeraSans-Roman-30"/> - + - + @@ -347,12 +349,12 @@ Q19.5312 74.2188 31.7812 74.2188" id="BitstreamVeraSans-Roman-30"/> - + - + @@ -365,12 +367,12 @@ Q19.5312 74.2188 31.7812 74.2188" id="BitstreamVeraSans-Roman-30"/> - + - + @@ -384,12 +386,12 @@ Q19.5312 74.2188 31.7812 74.2188" id="BitstreamVeraSans-Roman-30"/> - + - + @@ -403,12 +405,12 @@ Q19.5312 74.2188 31.7812 74.2188" id="BitstreamVeraSans-Roman-30"/> - + - + @@ -422,23 +424,23 @@ Q19.5312 74.2188 31.7812 74.2188" id="BitstreamVeraSans-Roman-30"/> +M72 388.8 +L72 43.2" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;"/> +M72 388.8 +L518.4 388.8" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;"/> +M518.4 388.8 +L518.4 43.2" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;"/> +M72 43.2 +L518.4 43.2" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;"/> diff --git a/lib/matplotlib/tests/baseline_images/test_axes/boxplot_autorange_whiskers.pdf b/lib/matplotlib/tests/baseline_images/test_axes/boxplot_autorange_whiskers.pdf index dfdb5b6f3f9c2ca96467fc467e231512d74cc14e..841b92eb69ecb36774223aa7568bb932e1a588f3 100644 GIT binary patch delta 1713 zcmaJ>Yfuwc6fPJktV#f%Wdv^sA5&?%OP>Xby5R&jnV6&jmVrqRb z7I0*)Z+TR#%%}rZP<(*2jDi#$bZ}@y##G{yN^xw(M@8u_!CIu#{jqcJchCLKckZ0; z)cbb%ZjW|V>Bv;QK?@cE48(!5bkrR|Bi7N8Dw?D9Y*s~_Z!b=Ve zC)T0S)@n#cTwmE*<1^D|p-pdX;aTq{bzCany}{csF!Sa$^I&)C%`MjR<)X?E4J6i} zn_T5Jq3rL56yY)QNIQ>`PFYx=9CowJRJ6_D0O~&axhSPq}^4wLmAb! zG3Zf}uGJRCt)k7R|;@x80H-Y5it%bJ1wqvzl8u5AN4ci|=)1 zO|djtLu#8!4us5aX>oY4wXZ*`ZqNp$TXxyF#V@>v5DnyVJROB17{I|BTAk)Oz#a}C zCUFWpB}}gyQ__*QZJrpLlCDwH00udEaZy!n3O(i!g^|iaU_ZypQ7DG-P8rbA*$8{z z=fl^WKS|b56Im3D1sEgfNNNRTRGR=UVoe25g`P6eEX-`t1br&4W6s767hzBv$6WhX z%o_;ixP0O$lfioDkG=kp#M)8_(BXaFv?uM0Gk5k7HUqQJ){k(vbfn|btho}poKCR!##P`Tj$!(cww z;A?*dcI24=s??{Nz~=zR#`3LUhgUA6ABWT30z3#zgcBHs5h5ZG6Z>J9AIx+kV3ZpV ze&-gECSe4#A20x9Y=H?SVx||~!K4^dQQ?rT%;nz K*Eb?of&2}A^l9(_ delta 1710 zcmZXVdr%Wc9LLK`;93Ns7DX)UBT7`bM@Wt!1`{9@0Tob?Qo|hKNFpJJ$pr{l)0X1Y zD%G&k!6I#ajZOs_rS(O8TN#yN#TFHv>Zo-D1_e7x6*}!50kvlT+Wqb4x4-@F?RT$T za8R&0#a18eg4nXrV1UM#vI*%d#nK=GU?2@a)3sEd&Y%Gj+fSj21S4ZE0@2X`jZFt= z99^ta(`g9`fO4Z{M#^9+qKvdbZQ(|iA{w9$UM2(RQhtI31f1`J1&+=xr8FE9%NSU0 z$^@h^-(``tF(Ziy!2M1PWwuQiZyr80cpce$uF>!G<*#}_63{GJL!NuM{09oI;?SDse*1^xO=W_AnVqZthKY|dKxlPb5!(`v^v3u z1q<1I&C2qv^~==<8ZwWyrBx23H`zCwIU;M9bV(NdAZP0jbolo4EbQ!`wRkn&vbN#h z+Km;Gy_W)dt(Tu&75+AO>X+%^7YA3@B=uIib#w|6%5C)xw%+O*)voZ?=QmS&cg|@F zdbiBn`IeqNRN%Q^(KdC(tz``ns&R$JqdsnpbEu6+vaa@2%!+JYdoEnN>9ps)3pAF9fEI9>=6l!;q>(xM8cUDyV<1O%5YC!SF)-6+~ZAv{KEE%rRb*_}j z-m&yW>CV_&uPwQ!Q9-4Hr)I?Xj0^ciZ6Wwx)CaH`1zYfA`0zYLiM+7iZr` zC*I6a1>T#yHEGR4D&|?n+2Wm5dY^4gEy)*J@$s_!sdzf4%-vdz&r$ z@vhaC_V)58f*ke=d?b?fdwet`AeDrHv$@;D;CR011V&AoCrNiqat}lkN z9+7v^FM)qD6uJkyVkAs($Kg?rGHCM%g>{~PxkSQLcOXnR=dvSLSIHO)0h&x3G^`eg z$gvx}VoB~QTFoLTJmnn%w~f;@m%2}Kfksaubn|3jm6uPTlDp7xv`KB$6|syF;3D2g z0ENLw2%P3U(@Q~_Xr6%pnUa{P%VV`BfD;brWqIB|BF-FI%DB|Xs5wIHARNZx^8u>V z8BHvY01SaG-oOVz;|*$N#IMoO@Ud5T+^E%FhGjAYO{PY(2(cJ&0ostq8L(p`VF3jNefGYKr#sowJg0A?0)@igX5J!-3zLZpbxO=Ky(PAxZR^fbSe+)+eINShBLVs~LaW9AM_;!s*f8ySF;jsaW3 z^`(wJW1yj*Z;X;~yhL(SB+2~>`1VQ@j*(6^aDsCQk0rehiV5x{`Sx0}B+^L~fniRfB5+&^t^P`H35f^< I@k^A*e`3s6nE(I) diff --git a/lib/matplotlib/tests/baseline_images/test_axes/boxplot_autorange_whiskers.png b/lib/matplotlib/tests/baseline_images/test_axes/boxplot_autorange_whiskers.png index 3e4d8726d3a33f82eea159ca8c4f29e27a0aef46..6f4d6c4ec746221bf274ca1c011d1f8a2fd2510e 100644 GIT binary patch literal 6949 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 literal 6749 zcmeI0c{tST`^O(y%aQC$*^)#_k|m6hU9ucG5u!{**%~5YEa}*pC@uB~NjQ^iVNjtG z8nR>b3jV$Qn((YXrZ^vGWlTm$HC8_`=DkuYtv#!LAb(u)!jXAJKuhO#7+P6nNz^6%_$3uAFmvdg0T`=dE!iiSJuR zky=8JnE|-M!U4b?!%%q0aQXSEca_6D2Y7G~!*!T@8_U&u5})f`QBL74;s3CsXN3K8 zl3wJ_##lwXFyH=DQPtDDmg) zudqrii=^&WSU?OJtOYj|2;3dZE_uA1a}ozmL2hFY4(^UrBPJr~)8Nb-11J+**Fc zi~_*tLoPZ=weuaO23VM1zoXe$05F!;0U-1kjQYRJe_$MZ4Y-f=)h_nA;e02%)vpcd zoXXHT?pgUY!nVdAO+Ybim5jiEPdj4vqjLM(x6yn#IGoZ>3GF>dm^#CpPRqJAGp{+7 zu5>)fHiDIB?Re`qgU);l?09B~_Uh{DaC^vx&mQd{^)tl|B6XYeX>ufT{Q`juzgWXX z=b7v1hve`LNBLxDxR{;G+|(-fAfEYT4S?ky7o8nPJo_t!)jS;tC|J81OiAvO-9_k` zp@vHOB5|u0JGS4^kK~p}fF-MTxh+kksHkYGoWD6RCyh`DIXG8B_Hr|FgGaGuM)%ai zBabPG!UpDP>OAMpozv6a7Sq7WGpT& zx?a8dY;~OJj}j%`mt|!J_V&cAvW<<6TX`aglgUtu=6B_Mfz1LnJKQ*%kEF{5uMr2E zxYYV*ys%UXC2DN!a;nrD)qa;9nwpw9xw$e7B`bAl7ynMzI?ZtrSE6Kfv&L^Wjj13z zEG%sKgAJay+K(F3nyOak6;$8&w4`LyGIeO`OQ}ajebhy#aDr*5HQ~jj7U!1x3g~9B z8~QdjJy|Z^6O)suZymX;=Ij8huow$a2ddTJ&AIniDye$*t5eDgPUr7{m~b@#s+yRl zA3tIn0C5L`x&Pc@{?u%Knq^)wg(;MCl1h#D3L@_&3=Gi2nlrTNgoj!yn@!`$%@rxk zR0S#E;NA`C41ec92j8v+sR5TI+Q2NWdQ$+^oUvMu5;|nNtME*bXh$>a)kq9iRMdgr zAc7I}t{EB`868toGYSk0Wb|>wPS&;V3cLUovDmu{yMc|OJRMWtv^cH5zH}#{zY>iK zT4`}Arm5FoYQ#6W4$by8`mnJWK8=(JRwo6oQ7>qnUQWM&IK4dI={AhqoFi3EJS&X2 zo~hi*V_}y;i6;6Z(t@k=*EBm>DcMA*zvvBe=-pKEP$wY zt#E12@L&Aml2cNmIM$jfWcuK6d^De|AVLtfy4NCi!q z6f06A`Jr88@R@j6I|$^do-oX>b0g+@!jnyMco)C4cyLzY=hZ;pZ3P(S#qp64|LQw zx1UM=_()k6g8m*11~a=lS< z#AnP@%WtZ8`MpIjFQ2S=oCmR7KAy6T^TWwx|Cg~AiC&5U{0uRQ{S-;5 zT_Wx7KyT89zlXDPH-&R+3!9mlp*QJEP9F#W488dJ%e!6fgLnj^%;sIDNwwnxnI0N(cuO9lR!5YI*@c-f281#1405(tefme)_9B$K`KD6b| zZ$qGmc0}3E&dwQT;OsYx5IYzX%hDQ_gAJ!G5CS2PwT4SG>F)PV=4LlDfza0+cjN;n zizVL1^L|kvmckkNaGHezx?oakF`0&b7ru6_xl=)~D&oyj zRnx1BAoCvj1$j= z20$(#iZBN6E1H#4ux47xX>+xQ94(t6{IZ)s;Aw4bg#{)K6{Twr4+!OMAVY?P^ALt! z5{N`i*CMNew?!2sQK);kz$KbbPYk0_A=+5l*a+Q~wb1s$z~=j_eDY!c-Eg9?P3W;K zl(t|#4FFVHMegWp`b`}OfWw3X_mqE_4beB$AO>BDNFt3a8a#wH{rWH*D#i&JhF)z{RiQ)JZ$i_kbph*&&4 za6V`?CHXlHnop=XWIW8Pa!O+8l9WzX6EvE# z8JNW{l*!51n{#809l53`DAxv9)+6p~OVikP49$lyI2htd?Wx-+17SRErhjBbzzp7> zlA4O5uP)%c2JyByX9I^2`T~07U1GKovv4^!Xha&_bM8i?V(@IN|M&N@(tES5!yt-$XaD=12NiRhU(W|Z1(7=OyE9{#m2ap!N<((J0Ty}XDvV) zCihbT=o(WIvXmB7bld}PgHi8|Hg&6AK9jpu-J`B_<~6Rb%yFje9D1`dsu&`YZ=N1g zTwEL#)%(iVZJp{B5*rn@HeH8oN)WRj@vmpS2P-d^A{9EJiCMk=F%yX-!O^rWbVjE# zwGn4Z9L1n3wSDebt0C?`6b8pT@KhkHpyw%sDD^q}Pwm>z<&saLVL3z1QuNju+6Euy zPDVxsqw`LYYBl%nZNf@O3~nq|kk& YO&^-}({x3l%mZLzV6I=Rd;Zpc0G9?={r~^~ diff --git a/lib/matplotlib/tests/baseline_images/test_axes/boxplot_autorange_whiskers.svg b/lib/matplotlib/tests/baseline_images/test_axes/boxplot_autorange_whiskers.svg index 0d070e52b984..2f45fa6743b0 100644 --- a/lib/matplotlib/tests/baseline_images/test_axes/boxplot_autorange_whiskers.svg +++ b/lib/matplotlib/tests/baseline_images/test_axes/boxplot_autorange_whiskers.svg @@ -40,17 +40,17 @@ L166.86 181.44 L166.86 181.44 L175.23 181.44 L166.86 181.44 -L166.86 181.44" style="fill:none;stroke:#000000;stroke-linecap:square;"/> +L166.86 181.44" style="fill:none;stroke:#0000ff;stroke-linecap:square;"/> +L183.6 216" style="fill:none;stroke:#0000ff;stroke-dasharray:6.000000,6.000000;stroke-dashoffset:0.0;"/> +L183.6 146.88" style="fill:none;stroke:#0000ff;stroke-dasharray:6.000000,6.000000;stroke-dashoffset:0.0;"/> +L191.97 181.44" style="fill:none;stroke:#ff0000;stroke-linecap:square;"/> @@ -80,17 +80,17 @@ L390.06 181.44 L390.06 181.44 L398.43 181.44 L390.06 181.44 -L390.06 181.44" style="fill:none;stroke:#000000;stroke-linecap:square;"/> +L390.06 181.44" style="fill:none;stroke:#0000ff;stroke-linecap:square;"/> +L406.8 216" style="fill:none;stroke:#0000ff;stroke-dasharray:6.000000,6.000000;stroke-dashoffset:0.0;"/> +L406.8 146.88" style="fill:none;stroke:#0000ff;stroke-dasharray:6.000000,6.000000;stroke-dashoffset:0.0;"/> +L415.17 181.44" style="fill:none;stroke:#ff0000;stroke-linecap:square;"/> @@ -114,20 +114,20 @@ L415.17 181.44" style="fill:none;stroke:#0000ff;stroke-linecap:square;"/> +L0 -4" id="mc7db9fdffb" style="stroke:#000000;stroke-width:0.5;"/> - + +L0 4" id="m5a7d422ac3" style="stroke:#000000;stroke-width:0.5;"/> - + @@ -161,12 +161,12 @@ Q19.5312 74.2188 31.7812 74.2188" id="BitstreamVeraSans-Roman-30"/> - + - + @@ -199,33 +199,26 @@ z +L4 0" id="md7965d1ba0" style="stroke:#000000;stroke-width:0.5;"/> - + +L-4 0" id="md9a1c1a7cd" style="stroke:#000000;stroke-width:0.5;"/> - + - + @@ -254,12 +254,12 @@ z - + - + @@ -298,12 +298,12 @@ Q31.1094 20.4531 19.1875 8.29688" id="BitstreamVeraSans-Roman-32"/> - + - + @@ -316,12 +316,12 @@ Q31.1094 20.4531 19.1875 8.29688" id="BitstreamVeraSans-Roman-32"/> - + - + @@ -334,12 +334,12 @@ Q31.1094 20.4531 19.1875 8.29688" id="BitstreamVeraSans-Roman-32"/> - + - + @@ -352,23 +352,23 @@ Q31.1094 20.4531 19.1875 8.29688" id="BitstreamVeraSans-Roman-32"/> +M72 388.8 +L72 43.2" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;"/> +M72 388.8 +L518.4 388.8" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;"/> +M518.4 388.8 +L518.4 43.2" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;"/> +M72 43.2 +L518.4 43.2" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;"/> diff --git a/lib/matplotlib/tests/baseline_images/test_axes/boxplot_sym.png b/lib/matplotlib/tests/baseline_images/test_axes/boxplot_sym.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ce8d83652d70339ba9963b68028ca9e47ea29d GIT binary patch literal 1735 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 literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_axes/bxp_customwhisker.png b/lib/matplotlib/tests/baseline_images/test_axes/bxp_customwhisker.png new file mode 100644 index 0000000000000000000000000000000000000000..1c0cbc22519a21a8009c92416fb4b1a1c9051ef7 GIT binary patch literal 2066 zcmb7_dpwls9>AY>W|)^SBRQtk#MaXJ_z0yAxy(#OOqW$IDRE{{Nn&VJI%CF+)hw&6 z-IYi*KHH?)lG=%e!AzG!M4V)_42E1Lw_ysS80V$!b58r$?)&+?m*>4b&-43zpYJbY z_t!qghF=&00F0@=Uj6_;6y$mw)<=#BYpY_A6Nb5k8VDm>GJG%{X&c1*?q>p^Z@aKV z0yDSO0ATM^y*39X<&SpWi&+u1vbLwKcH@wjuW5R?WzNZjV6nR^EZ!i5L;F)U-;Es- zFH0Yw1;9sT`>x%$&4}(v);Zp1&OoV|oeh1*~L%~m${)I=`IOT?2 zv3W&Z5@=*k_Vi@cP?H`<(?^x0%yZm5JVFyCmm7;p<$vprW1Qf~}& zS;>3mgSFi+9)FALn3$O8?dasVc_xk1Ct|1j#Kh^JEpa))rhF zOb8~Ras+5h?v5Ey)L2LP&M>O8AN?u@Hfnf=Clp@QKpQapb<0uc#6S{v0EF)x0FaxV z6@|%lvSo4sF&kI7i9*QQL@B%#U7^kXWwsID06p^HSW2&5?`wciiGeyJd~R*4*igOD&jqjX5(Xuktw!^Y4pd#@>y;b|II^Ls*QtuF{eN#d}9psv~mtFcr-FJJX_= zJ=xkX@HtCA3dgli2h*yL7MD(GwG%%{0{CF5H!R+cyw>VmZQ7($KERCYUu`nz>~oxd z-<_rv-F|HwkPHF_)BMj{-uVtkAIjf7l<+v{4wAIrlhThC|8{JuUhqPzuS4+ozb z-TC+IFP$1>m+%jQIHpflSf8z1q17qJ!J@~VS%}5 zdn*dJ9D#Hg0o{B6EDju5z6kG`)=svW){DG*;|W>b_)lov)6148up z>-OvEt9+4lAD3PqubUEN$>mW?;ux(V?jgrmBj>^T{FM308*K4#!QJ_%Q}SZASTPXy z)vUyfLhw4Ooln<5i9}@wa~tK5`JIIUbzN~rY1v3j&kutFgUz0ccV+B&TTE!}iO)sz zv?Tu%Ao}*JBFtS|2L){jV0BU+PS2M&-jHF zTj@vmx|{U^=)HrJWc@p-WwHg~FkO|x>JWAL&^(4J*RYYmM5W3`6{XHJgm3$~tRE${ zm(*jcP)Tj1<-9{)nC3OB%->CuRVu;o9sR_yZ~k zDUs_j`U}eNG&iXU3@3z=xO_wfTj|_$_1I=Sq2?gGn1DQV+PWYlktttp7-^}iqq@7h ze~`}WTAIkE$YMA(H}-#vA@X!T`iRL7?22^}wa><|h}kMWnytu?$?ZqOPB{omSU7S$ z7H<9#F+0-HD)?;ODwyJfd}xZPIcSP0T>Vk>$V`e+k8^K-6y;uC_|CmN$n7)l-`3!~ zj}w(19>njv>_V~oNZf|UE&oxP81cf8PL30;DL(%z6}`c{FcVaHFIsgR|J2-y;!77Y zJ)tzP&8axAEE%vZ2sM3@KbrB+6eO42qMJ{MF*yTbk#OZS;?lT( zTvkb~345}~FQ(WjhTBRy-VQc(F8@ORSGL?w9i>|=d+G`-D7avSLN|E-^&0n?y?-C$ aBrVp5nzD`4yb&qtfa?9V*PSi&)c*o#(|gDO literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index a9eaa8a86239..638e4907095a 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -1353,6 +1353,36 @@ def test_bxp_custommedian(): ax.bxp(logstats, medianprops=medianprops) +@image_comparison(baseline_images=['bxp_customcap'], + remove_text=True, extensions=['png'], + savefig_kwarg={'dpi': 40}) +def test_bxp_customcap(): + np.random.seed(937) + logstats = matplotlib.cbook.boxplot_stats( + np.random.lognormal(mean=1.25, sigma=1., size=(37, 4)) + ) + + fig, ax = plt.subplots() + ax.set_yscale('log') + capprops = dict(linestyle='--', color='g', linewidth=3) + ax.bxp(logstats, capprops=capprops) + + +@image_comparison(baseline_images=['bxp_customwhisker'], + remove_text=True, extensions=['png'], + savefig_kwarg={'dpi': 40}) +def test_bxp_customwhisker(): + np.random.seed(937) + logstats = matplotlib.cbook.boxplot_stats( + np.random.lognormal(mean=1.25, sigma=1., size=(37, 4)) + ) + + fig, ax = plt.subplots() + ax.set_yscale('log') + whiskerprops = dict(linestyle='-', color='m', linewidth=3) + ax.bxp(logstats, whiskerprops=whiskerprops) + + @image_comparison(baseline_images=['bxp_withnotch'], remove_text=True, extensions=['png'], savefig_kwarg={'dpi': 40}) @@ -1499,6 +1529,18 @@ def test_boxplot(): ax.set_ylim((-30, 30)) +@image_comparison(baseline_images=['boxplot_sym'], + remove_text=True, extensions=['png'], + savefig_kwarg={'dpi': 40}) +def test_boxplot_sym(): + x = np.linspace(-7, 7, 140) + x = np.hstack([-25, x, 25]) + fig, ax = plt.subplots() + + ax.boxplot([x, x], sym='gs') + ax.set_ylim((-30, 30)) + + @image_comparison(baseline_images=['boxplot_autorange_whiskers']) def test_boxplot_autorange_whiskers(): x = np.ones(140) From 2a7a66a5dd4b00b0ad0332fe546736392a8a0a34 Mon Sep 17 00:00:00 2001 From: Paul Hobson Date: Sun, 1 Jun 2014 11:02:16 -0700 Subject: [PATCH 2/7] fixed typos/formatting in docstrings --- lib/matplotlib/axes/_axes.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index d1f0310c228f..63916c80c04d 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -2915,7 +2915,7 @@ def boxplot(self, x, notch=False, sym='b+', vert=True, whis=1.5, sym : str, default = 'b+' The default symbol for flier points. - Enter an empty string ('') if you don't wantshow fliers. + Enter an empty string ('') if you don't want to show fliers. vert : bool, default = False If True (default), makes the boxes vertical. @@ -2948,13 +2948,13 @@ def boxplot(self, x, notch=False, sym='b+', vert=True, whis=1.5, An array or sequence whose first dimension (or length) is compatible with *x*. This overrides the medians computed by matplotlib for each element of *usermedians* that is not None. - When an element of *usermedians* == None, the median will be - cted by matplb as normal. + When an element of *usermedians* == None, the median will be + computed by matplotlib as normal. conf_intervals : array-like or None (default) Array or sequence whose first dimension (or length) is compatible with *x* and whose second dimension is 2. When the current element - ofnf_intervals* is not None, the notch locations computed by + of *conf_intervals* is not None, the notch locations computed by matplotlib are overridden (assuming notch is True). When an element of *conf_intervals* is None, boxplot compute notches the method specified by the other kwargs (e.g., *bootstrap*). @@ -3143,14 +3143,14 @@ def bxp(self, bxpstats, positions=None, widths=None, vert=True, If True produces boxes with the Patch artist shownotches : bool, default = False - If False (default), produces a rectangular box plot. - If True, will produce a ed box plot + If False (default), produces a rectangular box plot. + If True, will produce a ed box plot showmeans : bool, default = False If True, will toggle one the rendering of the means showcaps : bool, default = True - If T will toggle one the rendering of the caps + If True will toggle one the rendering of the caps showbox : bool, default = True If True, will toggle one the rendering of box @@ -3168,7 +3168,7 @@ def bxp(self, bxpstats, positions=None, widths=None, vert=True, If provided, will set the plotting style of the whiskers flierprops : dict or None (default) - If provi will set the plotting style of the fliers + If provided will set the plotting style of the fliers medianprops : dict or None (default) If provided, will set the plotting style of the medians From 4b81a4f6a0291ec7131965528ba4f1d0fb4bdb9c Mon Sep 17 00:00:00 2001 From: Paul Hobson Date: Sun, 1 Jun 2014 11:16:43 -0700 Subject: [PATCH 3/7] clean up whitespace --- lib/matplotlib/axes/_axes.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index 63916c80c04d..91abceaaab5c 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -3084,7 +3084,7 @@ def boxplot(self, x, notch=False, sym='b+', vert=True, whis=1.5, def bxp(self, bxpstats, positions=None, widths=None, vert=True, patch_artist=False, shownotches=False, showmeans=False, showcaps=True, showbox=True, showfliers=True, - boxprops=None, whiskerprops=None, flierprops=None, + boxprops=None, whiskerprops=None, flierprops=None, medianprops=None, capprops=None, meanprops=None, meanline=False, manage_xticks=True): """ @@ -3095,7 +3095,7 @@ def bxp(self, bxpstats, positions=None, widths=None, vert=True, bxp(self, bxpstats, positions=None, widths=None, vert=True, patch_artist=False, shownotches=False, showmeans=False, showcaps=True, showbox=True, showfliers=True, - boxprops=None, whiskerprops=None, flierprops=None, + boxprops=None, whiskerprops=None, flierprops=None, medianprops=None, capprops=None, meanprops=None, meanline=False, manage_xticks=True): @@ -3259,15 +3259,15 @@ def bxp(self, bxpstats, positions=None, widths=None, vert=True, sym = flierprops.pop('sym', '') if sym == '': - final_flierprops = dict(linestyle='none', marker='+', - markeredgecolor='b', + final_flierprops = dict(linestyle='none', marker='+', + markeredgecolor='b', markerfacecolor='none') else: final_flierprops = dict(linestyle='none') final_flierprops.update(flierprops) else: sym = '' - final_flierprops = dict(linestyle='none', marker='+', + final_flierprops = dict(linestyle='none', marker='+', markeredgecolor='b') # median line properties From 462362f935c1e3c49aa0918ca2fc77d7ae1a9e6a Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sat, 28 Jun 2014 14:16:07 -0400 Subject: [PATCH 4/7] BUG : fix errors when using fliers doplot for horizontal boxes (internal bxp helper function) assumes that it will be passed an even number of positional arguments which it swaps pair-wise. The code to draw the fliers also passes in a format string which breaks the assumption. - re-worked how `bxp` deals with the `sym` input - minor pep8 --- lib/matplotlib/axes/_axes.py | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index 91abceaaab5c..3adea277c971 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -39,6 +39,7 @@ import matplotlib.transforms as mtrans from matplotlib.container import BarContainer, ErrorbarContainer, StemContainer from matplotlib.axes._base import _AxesBase +from matplotlib.axes._base import _process_plot_format iterable = cbook.iterable is_string_like = cbook.is_string_like @@ -3254,21 +3255,23 @@ def bxp(self, bxpstats, positions=None, widths=None, vert=True, if whiskerprops is not None: final_whiskerprops.update(whiskerprops) + # set up the default flier properties + final_flierprops = dict(linestyle='none', marker='+', + markeredgecolor='b', + markerfacecolor='none') # flier (outlier) properties if flierprops is not None: - sym = flierprops.pop('sym', '') - - if sym == '': - final_flierprops = dict(linestyle='none', marker='+', - markeredgecolor='b', - markerfacecolor='none') - else: - final_flierprops = dict(linestyle='none') + sym = flierprops.pop('sym', None) + + # watch inverted logic, checks for non-default + # value of `sym` + if not (sym == '' or (sym is None)): + # process the symbol string + # discarded linestyle + _, marker, color = _process_plot_format(sym) + final_flierprops['marker'] = marker + final_flierprops['color'] = color final_flierprops.update(flierprops) - else: - sym = '' - final_flierprops = dict(linestyle='none', marker='+', - markeredgecolor='b') # median line properties final_medianprops = dict(linestyle='-', color='red') @@ -3398,10 +3401,10 @@ def dopatch(xs, ys, **kwargs): # draw the whiskers whiskers.extend(doplot( - whisker_x, whiskerlo_y,**final_whiskerprops + whisker_x, whiskerlo_y, **final_whiskerprops )) whiskers.extend(doplot( - whisker_x, whiskerhi_y,**final_whiskerprops + whisker_x, whiskerhi_y, **final_whiskerprops )) # maybe draw the caps: @@ -3427,7 +3430,7 @@ def dopatch(xs, ys, **kwargs): # maybe draw the fliers if showfliers: fliers.extend(doplot( - flier_x, flier_y, sym, **final_flierprops + flier_x, flier_y, **final_flierprops )) # fix our axes/ticks up a little From 4379f44a9d6e71b7507a547d47262515e27551de Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Thu, 3 Jul 2014 23:21:57 -0400 Subject: [PATCH 5/7] BUG : handle colors passed in via sym in bxp If the user passes is the string 'ro' assume they want filled circles. This is also the old behavior. --- lib/matplotlib/axes/_axes.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index 3adea277c971..c3a29f0fe4d3 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -3269,8 +3269,12 @@ def bxp(self, bxpstats, positions=None, widths=None, vert=True, # process the symbol string # discarded linestyle _, marker, color = _process_plot_format(sym) - final_flierprops['marker'] = marker - final_flierprops['color'] = color + flierprops['marker'] = marker + flierprops['color'] = color + # assume that if color is passed in the user want + # filled symbol + flierprops['markeredgecolor'] = color + flierprops['markerfacecolor'] = color final_flierprops.update(flierprops) # median line properties From 75f31557819bc3ad1de456d40a2b584c45858049 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sun, 6 Jul 2014 18:09:56 -0400 Subject: [PATCH 6/7] DOC : fixed errors in docstrings --- lib/matplotlib/axes/_axes.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index c3a29f0fe4d3..7acf70f2a857 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -2996,7 +2996,7 @@ def boxplot(self, x, notch=False, sym='b+', vert=True, whis=1.5, If provided, will set the plotting style of the whiskers capprops : dict or None (default) - If provided, will set the plotting style of the whiskers + If provided, will set the plotting style of the caps flierprops : dict or None (default) If provided, will set the plotting style of the fliers @@ -3145,7 +3145,7 @@ def bxp(self, bxpstats, positions=None, widths=None, vert=True, shownotches : bool, default = False If False (default), produces a rectangular box plot. - If True, will produce a ed box plot + If True, will produce a notched box plot showmeans : bool, default = False If True, will toggle one the rendering of the means @@ -3166,7 +3166,7 @@ def bxp(self, bxpstats, positions=None, widths=None, vert=True, If provided, will set the plotting style of the whiskers capprops : dict or None (default) - If provided, will set the plotting style of the whiskers + If provided, will set the plotting style of the caps flierprops : dict or None (default) If provided will set the plotting style of the fliers From 01b7b773a4190ef4fcc860204433551474571793 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Sun, 6 Jul 2014 18:53:14 -0400 Subject: [PATCH 7/7] MNT : Changed labeling to maintain back-compatibility changed labeling in cbook.box_plotstats to start at 1 to maintain back compatibility --- lib/matplotlib/axes/_axes.py | 4 +--- lib/matplotlib/cbook.py | 2 +- lib/matplotlib/tests/test_cbook.py | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index 7acf70f2a857..97467cf25276 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -3046,7 +3046,7 @@ def boxplot(self, x, notch=False, sym='b+', vert=True, whis=1.5, # replace medians if necessary: if usermedians is not None: if (len(np.ravel(usermedians)) != len(bxpstats) or - np.shape(usermedians)[0] != len(bxpstats)): + np.shape(usermedians)[0] != len(bxpstats)): medmsg = 'usermedians length not compatible with x' raise ValueError(medmsg) else: @@ -3352,11 +3352,9 @@ def dopatch(xs, ys, **kwargs): if not self._hold: self.cla() holdStatus = self._hold - for pos, width, stats in zip(positions, widths, bxpstats): # try to find a new label datalabels.append(stats.get('label', pos)) - # fliers coords flier_x = np.ones(len(stats['fliers'])) * pos flier_y = stats['fliers'] diff --git a/lib/matplotlib/cbook.py b/lib/matplotlib/cbook.py index 84540887b95a..402a9e52ea70 100644 --- a/lib/matplotlib/cbook.py +++ b/lib/matplotlib/cbook.py @@ -1948,7 +1948,7 @@ def _compute_conf_interval(data, med, iqr, bootstrap): ncols = len(X) if labels is None: - labels = [str(i) for i in range(ncols)] + labels = [str(i) for i in range(1, ncols+1)] elif len(labels) != ncols: raise ValueError("Dimensions of labels and X must be compatible") diff --git a/lib/matplotlib/tests/test_cbook.py b/lib/matplotlib/tests/test_cbook.py index 994e780911b4..d41044c004a4 100644 --- a/lib/matplotlib/tests/test_cbook.py +++ b/lib/matplotlib/tests/test_cbook.py @@ -122,7 +122,7 @@ def setup(self): 'q3': 14.85246294739361, 'whishi': 27.899688243699629, 'whislo': 0.042143774965502923, - 'label': 0 + 'label': 1 } self.known_bootstrapped_ci = {