From 94d044e5fb453b54fd89cabc8a5387cae589766e Mon Sep 17 00:00:00 2001 From: Olga Botvinnik Date: Sat, 4 Jan 2014 12:58:30 -0800 Subject: [PATCH 1/3] Added rcParams for removing specific spines Added xtick.position and ytick.position to rcsetup.py trying to fix Travis CI failure on 2.6 Removed x-y position parameter from rc default dic Added style rcParam + stylesheet recursion scatter, fill_between and fill_betweenx use color_cycle Added rcParameters for boxplot + validations functions Added rcParameter to choose grid axis display Comment tweaks added boxplot.flierprops + line length fixes fix: unable to get substyles from path or URL removed boxplot.fliersymbol because not needed Fixed boxplot checks spine removing modified + removed : from docstring removed color_cycle from scatter, fill_between, fill_betweenx Original behaviour of axes.grid + working rc axes.grid.orientation Fixed the get_substyles function to accept dictionnaries Fix PEP8 + OrderedDict issues in Travis Modified how we get rcParams in the boxplot method tried fixing test issues + pep8 fix travis for patch_artist linestyle issue removed the style rcParam to put it in an other PR used setdefault function + validation function + Error message fixed pep8 error fixed pep8 error (again) Comments and style fixes Fixed whiskers and bootstrap rcParams use Added tests for boxplot rc parameters and fixes added spine rc parameter test added test for axes.grid.axis rc parameter + typo fix in spines test Typo fix --- lib/matplotlib/axes/_axes.py | 69 +- lib/matplotlib/axes/_base.py | 4 +- lib/matplotlib/mpl-data/stylelib/bmh.mplstyle | 5 +- lib/matplotlib/rcsetup.py | 76 +- lib/matplotlib/spines.py | 2 + .../test_axes/boxplot_rc_parameters.pdf | Bin 0 -> 8025 bytes .../test_axes/boxplot_rc_parameters.png | Bin 0 -> 9164 bytes .../test_axes/boxplot_rc_parameters.svg | 1169 +++++++++++++++++ .../baseline_images/test_axes/rc_grid.png | Bin 0 -> 7468 bytes .../baseline_images/test_axes/rc_spines.png | Bin 0 -> 2747 bytes lib/matplotlib/tests/test_axes.py | 103 +- 11 files changed, 1411 insertions(+), 17 deletions(-) create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/boxplot_rc_parameters.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/boxplot_rc_parameters.png create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/boxplot_rc_parameters.svg create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/rc_grid.png create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/rc_spines.png diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index 45a72009e5dd..bea09ad72038 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -2950,11 +2950,11 @@ def xywhere(xs, ys, mask): return errorbar_container # (l0, caplines, barcols) - def boxplot(self, x, notch=False, sym=None, vert=True, whis=1.5, - positions=None, widths=None, patch_artist=False, + def boxplot(self, x, notch=None, sym=None, vert=None, whis=None, + positions=None, widths=None, patch_artist=None, bootstrap=None, usermedians=None, conf_intervals=None, - meanline=False, showmeans=False, showcaps=True, - showbox=True, showfliers=True, boxprops=None, labels=None, + meanline=None, showmeans=None, showcaps=None, + showbox=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, manage_xticks=True): """ @@ -3114,11 +3114,60 @@ def boxplot(self, x, notch=False, sym=None, vert=True, whis=1.5, .. plot:: mpl_examples/statistics/boxplot_demo.py """ + # If defined in matplotlibrc, apply the value from rc file + # Overridden if argument is passed + if whis is None: + whis = rcParams['boxplot.whiskers'] + if bootstrap is None: + bootstrap = rcParams['boxplot.bootstrap'] bxpstats = cbook.boxplot_stats(x, whis=whis, bootstrap=bootstrap, labels=labels) - # make sure we have a dictionary - if flierprops is None: - flierprops = dict() + if notch is None: + notch = rcParams['boxplot.notch'] + if vert is None: + vert = rcParams['boxplot.vertical'] + if patch_artist is None: + patch_artist = rcParams['boxplot.patchartist'] + if meanline is None: + meanline = rcParams['boxplot.meanline'] + if showmeans is None: + showmeans = rcParams['boxplot.showmeans'] + if showcaps is None: + showcaps = rcParams['boxplot.showcaps'] + if showbox is None: + showbox = rcParams['boxplot.showbox'] + if showfliers is None: + showfliers = rcParams['boxplot.showfliers'] + + + def _update_dict(dictionary, rc_name, properties): + """ Loads properties in the dictionary from rc file if not already + in the dictionary""" + rc_str = 'boxplot.{0}.{1}' + if dictionary is None: + dictionary = dict() + for prop_dict in properties: + dictionary.setdefault(prop_dict, + rcParams[rc_str.format(rc_name, prop_dict)]) + return dictionary + + # Common property dictionnaries loading from rc + flier_props = ['color', 'marker', 'markerfacecolor', 'markeredgecolor', + 'markersize', 'linestyle', 'linewidth'] + default_props = ['color', 'linewidth', 'linestyle'] + + boxprops = _update_dict(boxprops, 'boxprops', default_props) + whiskerprops = _update_dict(whiskerprops, 'whiskerprops', + default_props) + capprops = _update_dict(capprops, 'capprops', default_props) + medianprops = _update_dict(medianprops, 'medianprops', default_props) + meanprops = _update_dict(meanprops, 'meanprops', default_props) + flierprops = _update_dict(flierprops, 'flierprops', flier_props) + + if patch_artist: + boxprops['linestyle'] = 'solid' + boxprops['edgecolor'] = boxprops.pop('color') + # if non-default sym value, put it into the flier dictionary # the logic for providing the default symbol ('b+') now lives # in bxp in the initial value of final_flierprops @@ -3162,8 +3211,8 @@ def boxplot(self, x, notch=False, sym=None, vert=True, whis=1.5, if conf_intervals is not None: if np.shape(conf_intervals)[0] != len(bxpstats): - raise ValueError('conf_intervals length not ' - 'compatible with x') + err_mess = 'conf_intervals length not compatible with x' + raise ValueError(err_mess) else: for stats, ci in zip(bxpstats, conf_intervals): if ci is not None: @@ -3680,7 +3729,7 @@ def scatter(self, x, y, s=20, c=None, marker='o', cmap=None, norm=None, if facecolors is not None: c = facecolors else: - c = 'b' # the original default + c = 'b' # The original default self._process_unit_info(xdata=x, ydata=y, kwargs=kwargs) x = self.convert_xunits(x) diff --git a/lib/matplotlib/axes/_base.py b/lib/matplotlib/axes/_base.py index 9040a507a910..6b03e64da507 100644 --- a/lib/matplotlib/axes/_base.py +++ b/lib/matplotlib/axes/_base.py @@ -921,7 +921,9 @@ def cla(self): self.collections = [] # collection.Collection instances self.containers = [] - self.grid(self._gridOn, which=rcParams['axes.grid.which']) + self.grid(False) # Disable grid on init to use rcParameter + self.grid(self._gridOn, which=rcParams['axes.grid.which'], + axis=rcParams['axes.grid.axis']) props = font_manager.FontProperties( size=rcParams['axes.titlesize'], weight=rcParams['axes.titleweight'] diff --git a/lib/matplotlib/mpl-data/stylelib/bmh.mplstyle b/lib/matplotlib/mpl-data/stylelib/bmh.mplstyle index 721511297559..56f2b0ed55a0 100644 --- a/lib/matplotlib/mpl-data/stylelib/bmh.mplstyle +++ b/lib/matplotlib/mpl-data/stylelib/bmh.mplstyle @@ -1,5 +1,5 @@ #Author: Cameron Davidson-Pilon, original styles from Bayesian Methods for Hackers -# https://github.com/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/ +# https://github.com/CamDavidsonPilon/Probabilistic-Programming-and-Bayesian-Methods-for-Hackers/ lines.linewidth : 2.0 @@ -19,4 +19,5 @@ axes.titlesize: x-large axes.labelsize: large axes.color_cycle: 348ABD, A60628, 7A68A6, 467821, D55E00, CC79A7, 56B4E9, 009E73, F0E442, 0072B2 -legend.fancybox: True \ No newline at end of file +legend.fancybox: True + diff --git a/lib/matplotlib/rcsetup.py b/lib/matplotlib/rcsetup.py index dafd352137d2..d3b3c88607d4 100644 --- a/lib/matplotlib/rcsetup.py +++ b/lib/matplotlib/rcsetup.py @@ -139,6 +139,16 @@ def validate_int(s): except ValueError: raise ValueError('Could not convert "%s" to int' % s) +def validate_int_or_None(s): + """if not None, tries to validate as an int""" + if s=='None': + s = None + if s is None: + return None + try: + return int(s) + except ValueError: + raise ValueError('Could not convert "%s" to int' % s) def validate_fonttype(s): """ @@ -352,6 +362,22 @@ def validate_font_properties(s): 'verbose', ['silent', 'helpful', 'debug', 'debug-annoying']) +def validate_whiskers(s): + if s=='range': + return 'range' + else: + try: + v = validate_nseq_float(2)(s) + return v + except: + try: + v = float(s) + return v + except: + err_str = ("Not a valid whisker value ['range'," + "float, (float, float)]") + raise ValueError(err_str) + def deprecate_savefig_extension(value): warnings.warn("savefig.extension is deprecated. Use savefig.format " @@ -471,7 +497,7 @@ def validate_hinting(s): validate_movie_frame_fmt = ValidateInStrings('animation.frame_format', ['png', 'jpeg', 'tiff', 'raw', 'rgba']) -validate_axis_locator = ValidateInStrings('major', ['minor','both','major']) +validate_axis_locator = ValidateInStrings('major', ['minor', 'both', 'major']) def validate_bbox(s): if isinstance(s, six.string_types): @@ -530,6 +556,7 @@ def __call__(self, s): (self.vmax, s)) return s +validate_grid_axis = ValidateInStrings('axes.grid.axis', ['x', 'y', 'both']) # a map from key -> value, converter defaultParams = { @@ -574,6 +601,45 @@ def __call__(self, s): 'patch.facecolor': ['b', validate_color], # blue 'patch.antialiased': [True, validate_bool], # antialised (no jaggies) + ## Boxplot properties + 'boxplot.notch': [False, validate_bool], + 'boxplot.vertical': [True, validate_bool], + 'boxplot.whiskers': [1.5, validate_whiskers], + 'boxplot.bootstrap': [None, validate_int_or_None], + 'boxplot.patchartist': [False, validate_bool], + 'boxplot.showmeans': [False, validate_bool], + 'boxplot.showcaps': [True, validate_bool], + 'boxplot.showbox': [True, validate_bool], + 'boxplot.showfliers': [True, validate_bool], + 'boxplot.meanline': [False, validate_bool], + + 'boxplot.flierprops.color': ['b', validate_color], + 'boxplot.flierprops.marker': ['+', six.text_type], + 'boxplot.flierprops.markerfacecolor': ['b', validate_color], + 'boxplot.flierprops.markeredgecolor': ['k', validate_color], + 'boxplot.flierprops.markersize': [6, validate_float], + 'boxplot.flierprops.linestyle': ['-', six.text_type], + 'boxplot.flierprops.linewidth': [1.0, validate_float], + + 'boxplot.boxprops.color': ['b', validate_color], + 'boxplot.boxprops.linewidth': [1.0, validate_float], + 'boxplot.boxprops.linestyle': ['-', six.text_type], + + 'boxplot.whiskerprops.color': ['b', validate_color], + 'boxplot.whiskerprops.linewidth': [1.0, validate_float], + 'boxplot.whiskerprops.linestyle': ['--', six.text_type], + + 'boxplot.capprops.color': ['k', validate_color], + 'boxplot.capprops.linewidth': [1.0, validate_float], + 'boxplot.capprops.linestyle': ['-', six.text_type], + + 'boxplot.medianprops.color': ['r', validate_color], + 'boxplot.medianprops.linewidth': [1.0, validate_float], + 'boxplot.medianprops.linestyle': ['-', six.text_type], + + 'boxplot.meanprops.color': ['r', validate_color], + 'boxplot.meanprops.linewidth': [1.0, validate_float], + 'boxplot.meanprops.linestyle': ['-', six.text_type], ## font props 'font.family': [['sans-serif'], validate_stringlist], # used by text object @@ -648,6 +714,12 @@ def __call__(self, s): 'axes.facecolor': ['w', validate_color], # background color; white 'axes.edgecolor': ['k', validate_color], # edge color; black 'axes.linewidth': [1.0, validate_float], # edge linewidth + + 'axes.spines.left': [True, validate_bool], # Set visibility of axes + 'axes.spines.right': [True, validate_bool], # 'spines', the lines + 'axes.spines.bottom': [True, validate_bool], # around the chart + 'axes.spines.top': [True, validate_bool], # denoting data boundary + 'axes.titlesize': ['large', validate_fontsize], # fontsize of the # axes title 'axes.titleweight': ['normal', six.text_type], # font weight of axes title @@ -656,6 +728,8 @@ def __call__(self, s): # default draw on 'major' # 'minor' or 'both' kind of # axis locator + 'axes.grid.axis': ['both', validate_grid_axis], # grid type. + # Can be 'x', 'y', 'both' 'axes.labelsize': ['medium', validate_fontsize], # fontsize of the # x any y labels 'axes.labelpad': [5.0, validate_float], # space between label and axis diff --git a/lib/matplotlib/spines.py b/lib/matplotlib/spines.py index 0d1f707844d5..a68245086c31 100644 --- a/lib/matplotlib/spines.py +++ b/lib/matplotlib/spines.py @@ -467,6 +467,8 @@ def linear_spine(cls, axes, spine_type, **kwargs): else: raise ValueError('unable to make path for spine "%s"' % spine_type) result = cls(axes, spine_type, path, **kwargs) + result.set_visible(rcParams['axes.spines.{0}'.format(spine_type)]) + return result @classmethod diff --git a/lib/matplotlib/tests/baseline_images/test_axes/boxplot_rc_parameters.pdf b/lib/matplotlib/tests/baseline_images/test_axes/boxplot_rc_parameters.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8664d3a51d08247e6c004a64f5e24cf372213042 GIT binary patch literal 8025 zcmb_B2|QG7_tr4T79~p;*|N+&V=UQ4){yk77!1ZT!x$2gB1)wc$&wb7R@s+`77{8X ziKr-2*`lOH-*X4$Rp0x5zyI&g@62=WbI(1`dCocaob#NcXlG)kf!4$!6fZx6E>$AX z5DKEZ`yzC8A*ADuKnjF3CNs(YbZ-c0NA{)!Ll}Ty53OB`pwK*FM6Crcn9*rW2+Kl1 zI{1)1sWfkh0N)~zb_}|Q1BD5>06HdSfHozJ2_Y>408OL0(RgmOfVM(N(=g^b2PT&E|$tEhhPBFS^ zWldQ_Sv_guyvqW-&Q<#F+NhaYQz+H>m9JAn?7iMhB)N8*6-P}EwqHG}_x`EBEWRmy z7`#3-%={?r5^2_Y;GTt2b-$Zu3)_SA&K0^(9CxPHHAak#FDIzGdZez}{QOvlgj6&e ztwgLo;)1}}$++*g)?T|bh%sU_(G;1^Z|t0N5G!MUxTJ{yA zo%Xy}aVgI?R=nmYj)e@Dgc1!6Oye2xtGFBg(jPlrb$f}^)08c0vK(xs8#vtcC54iT zxRr-^GGE$<^gCVuE7RY9v}f|s?O=DBGOry))sdY%wn|8csf zAW>LSpsbTI(vjcS{z1#?E$Ql6Q}v+LgX+yY=n}RYE*}!Q6%$h0TB>ERrMfUFT&{M> z&;XaiS6-WP;VMyD?jbY3mh~$1(+NRYy3y?ZY?YyV`d%m!?7A*%x5|Y-An_U*C^*?u z-DupaN8-&ovkqw95DyZd-_?9i zvNOO9-3OC6y@)SQiCvtfAEfe+(|_<@Pn zJC^@2;&2q+A`q&oAx`8Jz1G0T*W%VvoW-U7#dAWFv7Q4VyPiWLGiR0f5xk&z?O9v% z+RomlfSMIo&HKWql*S#BqIIPe*-gJCuRd+HLXllDI_o&sGF&XzGE}NEd;jMvyjclc zId*T%4fZ=2aa=5yV=pRKX5ScL&2h0x<(` zw&CT=>k?#Lzp{}v;fM?VpwIU?|5$WYrsCHqo6qNEux_seS3N5m6v`vKEy`NIdhcX5 zJwpx=tI|1~xnlrAmMj@AYuV~kur2j1UdSP8Xvc|nR15#IBIUm6=8uBczbu_D@+8s= zN@@jdovA07>HI_MpA+-X=fCg^oydxeaA-ZAyJBnl@>QmPb$G_(@_!sG{?>KCkw2EF zS8#V@wn6+v`?S^`Ev@nJWh%xkswBOPqGJP^a`l_XeGF*RZ?mj8L^VD2HaIj7sE7=w zwPYO@TWhR=Mkag^)G7ZmegFLPQ$0V%U*RXKpO6-zmChYb*a`ZGhoxZ?W(({hKyIx}37s=wA z8jf!3E(D!Co}DKXcuGYv&cY1fvesIoQ&y7hk~M}`eL^& zr5e>;rJ-_dYs_vCx7@A0I;1XlZ*XR)66$A@O4}(GA;Kw=IWgi9aIB0mYgU!p1D>g6W7$I{oj z#{5BZOyYsZCnNgoFUz)^m-1M%Ugx#5oFIPxqOjoSzL*jpASoJ1n%ad-X`^c)Oev-yOkj?lhyFr97^8 zWIj)x=5)QI9J9%(u1PhB?VB0-+($QdC33uOg3dFGFpTfzXsuT(!=l5pQ99`lc^cv+ zE0o?IYn9rUd~@nj+;K+#*~07!=dGdAWv54y9jZw!&viqNj3=vVKhx1X8B{U+34QJz zubs9`PL9twZsUXVG1W6mn}Z9~QwHU^(lU;6-rrDna5A_4&bMsGyQlF}DHogb?}Zd@ z4ACX79rCq8Gchywx1*EBtJL&g zX%C7%V}i3>6Hm)N9QD<$%hcz(S$=25>ZIIEpRCqzN$X=SV;YbZ4L-T+w7bjsn>b&u zN^E*uy@_Zpav=1`G1{$V;hn=Z>`k9P9NvSBm#f=!N4fvfl&e};#?&^-QUA0Te%d!H zZDu6Sm}%Q3W^hi4G%6*18mwwT#l?qc9Cj)>>npp_I`mUl_mcB2?BC*2VjDGx_e%$H z-Qll1G)Pp_$Nm@7n@38B_mBH}DVZBl6qPc(-UX)*lOs*A89fOXpE}~xdi?0=C*Q4( z-+6f(d%&jVL0pDX=(^xYe8xqkqKM(|#L)6GEw-fYk;-eFRz6p6lpp&XrRFjoc`WO*0EbB&UW{F>YMgJllHa=*~8xjmYLsu@#+&@(o?DoSN1y zYrT;R%^+a-N?MBoV{;rX;jWZYvtCMk$ zBFZ>p3de(D+AO|)3JPbt^gVn@k5HSmyz?K}UYM57=CSh$Byuj}!V>?;Fal{bo91bt zwQ!II21|g@7%eS`gdxG%o8@SrfO`lrJol6bC&Cw{hGb{MtgLHF)(JA`yLq}{eXcaVR0%R|A23Xu-V zikys;`h&3w)^hgdXWlAZz#1Om%D%KA`;c^9)KHVcN%BSoUxBY%EW4isi#=G0(~-EO zOUhlhDYNNb9lsjS_p1A~rj9Ew=?aSm)^rv|{dW4HZ@TB$_4`B^ zSDnkGJ;cogD}%bkM~x?TG^~WYP8?4_Y<1c%5oI`jdfk=CDQ8D#sC8J{BJkiLyQJvQ z-CgDaq#}vydB`uDlTYw5hY!e)oUIkLXwG!ss{KW1EmJ+OhS1-XpSb>uxtgC<*Y<1+ zYP0;YtEr}RB0W;C++aepao4u{kfB3|3Uz18#giT?>5`Pa+ojV5aCfESo5ghFv7*V7 zkt$KHmP(Z>N%~6#&+KxQ%|4j9gw7t^da5*mbNTpFa=x_N-nP2*SCIy5#KPUa{CM(t z$ILfQ>C$M&Kd5HmS#n-Az;*oV83%7~$uLIqcGoxr?tXBhCNhgz=sQw#C01GOnudXq zCUSF|WmLOjckb<1n^sLJ78tEPJe=NaUpFODwCtfq{4YlK;{*EZHWeR!0icD{?GprSR&T>6Qnq&6D*kzNx+bn3IBI zMk%QUPe(8=Ec4C2$14swS9J2^sHw`X7Sr2rUdX5>I_>K{vgznuZ$%|Z;U1*|>*Ct} zXDP+8X(x=h2b`lHGm9#}NLxAgUyB`ILzZ|PW1WS+5bIT(=;3)gZ0eTP{=IRxMeQ;o zQ}`~X9)9$UPvP7;>(Jp_g)W3qIg{*Zta|dzyDF>M<83@vBigP-i|i&6_t}}@S{c{LXiax7u$8`tY$$egKI7DrZ9KkLMNEiIkVaZz?5u|6tec-Io^Y@pJ)YS+ZuWrjlCZlDZ8y6usAUosPHnY+mIhU8I*tA)_>}R zs#DS!w@xEFXZ82qqlX?wyih;5rTe{=@>nbNytLSr8?x@-WAyzkGq&7Si#J`CSEa%m z^~6vtXs2`ClxMcd_G0!91+m9Iioyb-w;l|mK7`fpc-kvoJTPhElWii~o+zTHQdsvo zQ~cWbZD_OVocx_HG+d>c=gWv3OkowukVaJIY_jD< zVUQg_{Yk@~9zdo6`vWDVf5<`*NMj!|1FonALugigZNBO>OZR7v0w+FL2)T*s$@BrJ zbCo$WDkGQ)Q-Dwi)>0;vU=Id0kV$7iXjZjtmIG@tlR;$_yfjfL*q4L^oZpdtt1aS$>X(8d!W zB!%kj!-N36*);7ZRk-SAMV{jngU3Ti8*%_3@ZY4ipa!_m3=D%k;1V31zJXF^p!w`_ zL@aC;K+OM06M=M|!^h*`xb@F!flG$7i@{mr{C?n<76=&Wz@!8?0Z}3?Kv|XQVMz1# zr@*(??=fSPcy3-Tv>2ScF3xL{lJ?#cxspiuuGfcU@C!J@Sw9Iy!-0R?G+Y>NQ) zOTwcdBKX=cL_CBArvVu7fKT{2jE^OtXGf5D1N?si#QbwCz=Z*(F%Nhw8bYIB0f79R zpalq#v>+l8+yiOh!Qw<1@E8a~!Xp4c1Yl)&JRm~ALPTJhL@mGo3S7e@{2U7aoO6ia zeV8Umiv-5mIe27k21`W1Bg_Q6DHsUggM#11gN@J90JvaX)-@If1fj(OJdwm2NkqUe zm?xkyV1u*k;=sCi3=j+mJMc3+7`1?~;E@Fw7>~db0zAU&vy=u45byv5%MunIyu%X8 zJah2KvLtvV9DIX z=G8Sn0+k`=8DUYt5djh!Yz?*rUz>$R&2j)Wz%g3?~ z>7b(kJ74r%Z(`O5v(8N53G9J^YFT{;mbb>RnmdR&mkgB6dIY<0%xqlv<&5Ti5$yZT zfI=7dVgBZV(X0?*YzX_gIWPaSy@T{1LulB`Aq_F}Xz2frw!j}Q2&%vMg2UmQ7=BGI zELT{APhqx)g@nVdMgWx-0%9YpL9~E43uj)QvpoMSAk2qmj3)3j8m!-6KcGhNhaL_H zWpjNVIFS4d(7zQCLXr%Za?0_VPG#=l-`W3WUw>)SwixS2IaAM_Jg{{uB-ZSVjSm~k zkk|iegxISu9b=wY(1A%&$O$bevbbVwzPT~vTzmNGQ0ttOX4F#EZog~XW`-+njVZj- zrKdSH>-WfCxl&~`;@{=$@#G3m*z{P^Smm8B>8EV91uu(u+l`%TS|3=$B^4suhzxI8 zeqX>fIsK?R@2QME|1JgYPM4dI%6Rq^0JgWXQjYz{8SIp7__vQR65NB z?((UaXk$=lJaAILC1SByoEi$Fj6x}^vRa3pAs(P9rV>DA2Kv*P{#17;(9;WYCwuq- z!T^Ou3ZyR!F+fvO6RQsSFqwhcNaU|qHR%j*)diXkV^F*hAZ!s3AgIj!ftY~@Uziv4 za}NH#;6I2qKS#vCM)UVM0ui>G#dA3DF)W(X!hsKH@f_g~c)(dN!b5=?({FQF;&1d& z7}Rh4VPK!Jh#r9iy!fIyJe=<=p2GqkxM&VX`kfa793d9rVPGG*cn;Iw|{g$VoOpLk3Lnd(nruzKM3bUJLpEJx@-4F{eOq^uS+ dFFM4sWmYFVm`P?ZS!P7U0W(rmG_^HD{0G)-hSLB5 literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_axes/boxplot_rc_parameters.png b/lib/matplotlib/tests/baseline_images/test_axes/boxplot_rc_parameters.png new file mode 100644 index 0000000000000000000000000000000000000000..db1f522be5f77d48bb36ead0246d424248ac6990 GIT binary patch literal 9164 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 W$?we7K|2|Okl&jf$vN!!!+!zS4=y + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/baseline_images/test_axes/rc_grid.png b/lib/matplotlib/tests/baseline_images/test_axes/rc_grid.png new file mode 100644 index 0000000000000000000000000000000000000000..27eb8b259db96608b6b3c00638512056b0a9139d GIT binary patch literal 7468 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 literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_axes/rc_spines.png b/lib/matplotlib/tests/baseline_images/test_axes/rc_spines.png new file mode 100644 index 0000000000000000000000000000000000000000..ee0a23a207a6537358334528977c27c3ef62eff8 GIT binary patch literal 2747 zcmb_ec~lcg9_}D=AG70uKsX$-!lL0&*yRi!Tn&UE36~;))$ss<351}DlE|RrF@nZX z98d!;Dj|W0C|4xNdSsrAgC+z}g(18NewDFr;VGdIEnJ#Zb++i?_p>wgyo*Zf({WtHT-hcHyPVYg?;)Uz58g zBAe`-xG@q+sV{bunEK6?*yAoq#W+97_qwJ8HlbZccJuUPw_#?(g7W8R+?ri&$z-yd z@;qb`(Ht+{JjQbtLU;U$w{`WPINMLc;>(cyWA7|5`>mDdcJADXg7J8~g{9>g6gE6O zIWrUAlNOUb)*H1npfqSv;;QM@cc@KO84cXzTNP@xTJfs5xVR#kE)8&8exgE>Ty*iG zWO}+j-^%+ch5v}gfO7S$*F#dX1I9XENU=Wx^H~Jlduxm1QUg%7#Kk?u2xfj z&}Zc4mjU;o_v(ERprXOyTu`E;qbWXrcXchb{6|`zwLXL0kKlI79Sd8*^ov-mK8)b@ zZEoi9Z-=dQ8P)v=us-#H1QL=XmIX6wYin#d>I9AEYRpA_x`4xgxxxw_XS$?OP+@(73B-+mjwRL-bU zP8Jl%IXr>r_3ORT)6n_<=27e54FD}hJ+NdOpMq_kn`q4!f;tqeDGv!Swkv(N=n3_0 z9UUE@UKF2Nz~B>R&Z8dZP{&YvfOvKN2$@7T$9J}*AIfaFQ1s~PGezx7k6w)6=FPI8 z0&Cfbg!7*2)9CMtt~#C#Iet0#{y#V0+JXh_Gjoc6e0Ft=n~x8-yDt5QcLDnm+Kil* z&P3=Fz2GyE`V$}eQ~kr?I3S-`Z7Ipgj>=fbXfb_pEUz=lsW7TC+TG938BTVy@S-Zq zhlYlfN*O+jzYUIjZzRg23-x!e3zNDwcp+)XBUWYeU3U8*AYT|(3{p5k_F|SvBvC*j zVbL$Y9PQ}rtfLE_?A|dSs`aKVgz0}W&`$39?>?>J3{UrB?7_Kl;qh0oO!CmL=4dn; zW_EORxUF6L4Qyd$W$fE~$iwJ;h`ZJA;xT`_eANEQ582hs!0e$p^rkn*$ z_F#r5*n0FpFch}fw0{49+T4@xh{d_wq0^ zQajD`tAeTY154C8tVpfdqzeiumd0_jkKw%%MK4Sex0HM zuLfF&S(ux&qI<_B^c_^WpKqQ-z<%AS1utGCN#t3QWOvQm?sRk9bP``-3%9nmdS#Es zA33A(@vrxlV}?3MX#)oLZ@vaP7Ke@!{hvmyoHOu56rSTb+cPx1?nwm*xS!mwu`S=35SM; zQkBxvRS8W+FUYes-6p0sn0Ama Date: Sun, 12 Jul 2015 19:37:05 +0200 Subject: [PATCH 2/3] PEP8 Fix --- lib/matplotlib/axes/_axes.py | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index bea09ad72038..ab8213f7d562 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -3139,7 +3139,6 @@ def boxplot(self, x, notch=None, sym=None, vert=None, whis=None, if showfliers is None: showfliers = rcParams['boxplot.showfliers'] - def _update_dict(dictionary, rc_name, properties): """ Loads properties in the dictionary from rc file if not already in the dictionary""" From 6d9c2f81f5926c4ce8582406ec833fc4a0e60979 Mon Sep 17 00:00:00 2001 From: Marin Gilles Date: Sun, 12 Jul 2015 21:59:42 +0200 Subject: [PATCH 3/3] Docstring fix --- lib/matplotlib/axes/_axes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index ab8213f7d562..eb941666832c 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -2962,7 +2962,7 @@ def boxplot(self, x, notch=None, sym=None, vert=None, whis=None, Call signature:: - boxplot(self, x, notch=False, sym='b+', vert=True, whis=1.5, + boxplot(self, x, notch=None, sym=None, vert=None, whis=None, positions=None, widths=None, patch_artist=False, bootstrap=None, usermedians=None, conf_intervals=None, meanline=False, showmeans=False, showcaps=True,