From e801685aef3d451bda21731b319da6b4a63b969e Mon Sep 17 00:00:00 2001 From: Nelle Varoquaux Date: Wed, 28 Sep 2016 20:28:36 -0700 Subject: [PATCH 1/9] Merge pull request #7178 from bcongdon/boxplot-zorder Boxplot zorder kwarg --- doc/users/whats_new/boxplot_zorder_kwarg.rst | 11 ++++++++++ lib/matplotlib/axes/_axes.py | 21 ++++++++++++++------ lib/matplotlib/tests/test_axes.py | 8 ++++++++ 3 files changed, 34 insertions(+), 6 deletions(-) create mode 100644 doc/users/whats_new/boxplot_zorder_kwarg.rst diff --git a/doc/users/whats_new/boxplot_zorder_kwarg.rst b/doc/users/whats_new/boxplot_zorder_kwarg.rst new file mode 100644 index 000000000000..bbb44aa59ee8 --- /dev/null +++ b/doc/users/whats_new/boxplot_zorder_kwarg.rst @@ -0,0 +1,11 @@ +Boxplot Zorder Keyword Argument +------------------------------- + +The ``zorder`` parameter now exists for :func:`boxplot`. This allows the zorder +of a boxplot to be set in the plotting function call. + +Example +``````` +:: + + boxplot(np.arange(10), zorder=10) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index a60ed1d9700a..16f7e4c6c1f2 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -3110,7 +3110,7 @@ def boxplot(self, x, notch=None, sym=None, vert=None, whis=None, showbox=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, - manage_xticks=True, autorange=False): + manage_xticks=True, autorange=False, zorder=None): """ Make a box and whisker plot. @@ -3123,7 +3123,7 @@ def boxplot(self, x, notch=None, sym=None, vert=None, whis=None, showbox=True, showfliers=True, boxprops=None, labels=None, flierprops=None, medianprops=None, meanprops=None, capprops=None, whiskerprops=None, - manage_xticks=True, autorange=False): + manage_xticks=True, autorange=False, zorder=None): Make a box and whisker plot for each column of ``x`` or each vector in sequence ``x``. The box extends from the lower to @@ -3235,6 +3235,9 @@ def boxplot(self, x, notch=None, sym=None, vert=None, whis=None, ``shownotches`` is also True. Otherwise, means will be shown as points. + zorder : scalar, optional (None) + Sets the zorder of the boxplot. + Other Parameters ---------------- showcaps : bool, optional (True) @@ -3409,7 +3412,7 @@ def _update_dict(dictionary, rc_name, properties): medianprops=medianprops, meanprops=meanprops, meanline=meanline, showfliers=showfliers, capprops=capprops, whiskerprops=whiskerprops, - manage_xticks=manage_xticks) + manage_xticks=manage_xticks, zorder=zorder) return artists def bxp(self, bxpstats, positions=None, widths=None, vert=True, @@ -3417,7 +3420,7 @@ def bxp(self, bxpstats, positions=None, widths=None, vert=True, showcaps=True, showbox=True, showfliers=True, boxprops=None, whiskerprops=None, flierprops=None, medianprops=None, capprops=None, meanprops=None, - meanline=False, manage_xticks=True): + meanline=False, manage_xticks=True, zorder=None): """ Drawing function for box and whisker plots. @@ -3428,7 +3431,7 @@ def bxp(self, bxpstats, positions=None, widths=None, vert=True, showcaps=True, showbox=True, showfliers=True, boxprops=None, whiskerprops=None, flierprops=None, medianprops=None, capprops=None, meanprops=None, - meanline=False, manage_xticks=True): + meanline=False, manage_xticks=True, zorder=None): Make a box and whisker plot for each column of *x* or each vector in sequence *x*. The box extends from the lower to @@ -3532,6 +3535,9 @@ def bxp(self, bxpstats, positions=None, widths=None, vert=True, manage_xticks : bool, default = True If the function should adjust the xlim and xtick locations. + zorder : scalar, default = None + The zorder of the resulting boxplot + Returns ------- result : dict @@ -3574,7 +3580,10 @@ def bxp(self, bxpstats, positions=None, widths=None, vert=True, # empty list of xticklabels datalabels = [] - zorder = mlines.Line2D.zorder + # Use default zorder if none specified + if zorder is None: + zorder = mlines.Line2D.zorder + zdelta = 0.1 # box properties if patch_artist: diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index 54e8c6aec82f..1c2b1ecd7083 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -2031,6 +2031,14 @@ def test_boxplot_bad_ci_1(): conf_intervals=[[1, 2]]) +@cleanup +def test_boxplot_zorder(): + x = np.arange(10) + fix, ax = plt.subplots() + assert ax.boxplot(x)['boxes'][0].get_zorder() == 2 + assert ax.boxplot(x, zorder=10)['boxes'][0].get_zorder() == 10 + + @cleanup def test_boxplot_bad_ci_2(): x = np.linspace(-7, 7, 140) From 9111ee267ffef0c1d9405151ee850b9db6b395ac Mon Sep 17 00:00:00 2001 From: Jens Hedegaard Nielsen Date: Thu, 10 Dec 2015 17:00:14 +0000 Subject: [PATCH 2/9] Merge pull request #5383 from mdboom/hidpi-nbagg Handle HiDPI displays in WebAgg/NbAgg backends --- doc/users/whats_new/2015-11-05_hidpi.rst | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 doc/users/whats_new/2015-11-05_hidpi.rst diff --git a/doc/users/whats_new/2015-11-05_hidpi.rst b/doc/users/whats_new/2015-11-05_hidpi.rst new file mode 100644 index 000000000000..6a0ed6ea9fe7 --- /dev/null +++ b/doc/users/whats_new/2015-11-05_hidpi.rst @@ -0,0 +1,5 @@ +Support for HiDPI (Retina) displays in the NbAgg and WebAgg backends +-------------------------------------------------------------------- + +The NbAgg and WebAgg backends will now use the full resolution of your +high-pixel-density display. From f9cb9cf719ea17257ee65ef78ac8ca18f2ec8d29 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 28 Oct 2015 18:46:18 -0400 Subject: [PATCH 3/9] Merge pull request #5330 from mdboom/reduce-testing-duplication TST: Reduce dupe between tests.py and matplotlib.test Conflicts: .travis.yml --- .travis.yml | 9 +-------- lib/matplotlib/__init__.py | 32 +++++++++++++++++++------------- tests.py | 27 ++++++++------------------- 3 files changed, 28 insertions(+), 40 deletions(-) diff --git a/.travis.yml b/.travis.yml index dbb5c9e81f96..cdea1adc3c15 100644 --- a/.travis.yml +++ b/.travis.yml @@ -77,20 +77,13 @@ install: pip install --upgrade setuptools - | # Install dependencies from pypi - pip install $PRE python-dateutil $NUMPY pyparsing!=2.1.6 $PANDAS pep8 cycler coveralls coverage + pip install $PRE python-dateutil $NUMPY pyparsing!=2.1.6 $PANDAS pep8 cycler coveralls coverage $MOCK pip install $PRE -r doc-requirements.txt # Install nose from a build which has partial # support for python36 and suport for coverage output suppressing pip install git+https://github.com/jenshnielsen/nose.git@matplotlibnose - # Install mock on python 2. Python 2.6 requires mock 1.0.1 - # Since later versions have dropped support - - | - if [[ -n "$MOCK" ]]; then - echo $MOCK - pip install $MOCK - fi; # We manually install humor sans using the package from Ubuntu 14.10. Unfortunatly humor sans is not # availible in the Ubuntu version used by Travis but we can manually install the deb from a later # version since is it basically just a .ttf file diff --git a/lib/matplotlib/__init__.py b/lib/matplotlib/__init__.py index 3f992e8e0aff..e29bee400649 100644 --- a/lib/matplotlib/__init__.py +++ b/lib/matplotlib/__init__.py @@ -1528,7 +1528,14 @@ def tk_window_focus(): ] -def verify_test_dependencies(): +def _init_tests(): + try: + import faulthandler + except ImportError: + pass + else: + faulthandler.enable() + if not os.path.isdir(os.path.join(os.path.dirname(__file__), 'tests')): raise ImportError("matplotlib test data is not installed") @@ -1563,37 +1570,36 @@ def verify_test_dependencies(): raise +def _get_extra_test_plugins(): + from .testing.noseclasses import KnownFailure + from nose.plugins import attrib + + return [KnownFailure, attrib.Plugin] + + def test(verbosity=1): """run the matplotlib test suite""" - verify_test_dependencies() - try: - import faulthandler - except ImportError: - pass - else: - faulthandler.enable() + _init_tests() old_backend = rcParams['backend'] try: use('agg') import nose import nose.plugins.builtin - from .testing.noseclasses import KnownFailure from nose.plugins.manager import PluginManager from nose.plugins import multiprocess # store the old values before overriding - plugins = [] - plugins.append(KnownFailure()) + plugins = _get_extra_test_plugins() plugins.extend([plugin() for plugin in nose.plugins.builtin.plugins]) - manager = PluginManager(plugins=plugins) + manager = PluginManager(plugins=[x() for x in plugins]) config = nose.config.Config(verbosity=verbosity, plugins=manager) # Nose doesn't automatically instantiate all of the plugins in the # child processes, so we have to provide the multiprocess plugin with # a list. - multiprocess._instantiate_plugins = [KnownFailure] + multiprocess._instantiate_plugins = plugins success = nose.run( defaultTest=default_test_modules, diff --git a/tests.py b/tests.py index 30fab2adbeeb..94b0b1bb8d70 100755 --- a/tests.py +++ b/tests.py @@ -17,30 +17,19 @@ matplotlib.use('agg') import nose -from nose.plugins import attrib -from matplotlib.testing.noseclasses import KnownFailure from matplotlib import default_test_modules -plugins = [KnownFailure, attrib.Plugin] - -# Nose doesn't automatically instantiate all of the plugins in the -# child processes, so we have to provide the multiprocess plugin with -# a list. -from nose.plugins import multiprocess -multiprocess._instantiate_plugins = plugins - def run(extra_args): - try: - import faulthandler - except ImportError: - pass - else: - faulthandler.enable() + from nose.plugins import multiprocess + + matplotlib._init_tests() - if not os.path.isdir( - os.path.join(os.path.dirname(matplotlib.__file__), 'tests')): - raise ImportError("matplotlib test data is not installed") + # Nose doesn't automatically instantiate all of the plugins in the + # child processes, so we have to provide the multiprocess plugin with + # a list. + plugins = matplotlib._get_extra_test_plugins() + multiprocess._instantiate_plugins = plugins nose.main(addplugins=[x() for x in plugins], defaultTest=default_test_modules, From b04c5b91695c9ca5da92c201c279c9c9beb3ae1c Mon Sep 17 00:00:00 2001 From: Michael Droettboom Date: Mon, 25 Jan 2016 12:14:46 -0500 Subject: [PATCH 4/9] Merge pull request #5882 from zblz/edge-comma-dots mathtext: Fix comma behaviour at start of string --- lib/matplotlib/mathtext.py | 3 +- .../test_mathtext/mathtext_cm_80.pdf | Bin 13015 -> 13268 bytes .../test_mathtext/mathtext_cm_80.png | Bin 3989 -> 4059 bytes .../test_mathtext/mathtext_cm_80.svg | 113 ++++++++++-------- .../test_mathtext/mathtext_dejavusans_80.pdf | Bin 7791 -> 7965 bytes .../test_mathtext/mathtext_dejavusans_80.png | Bin 4267 -> 4242 bytes .../test_mathtext/mathtext_dejavusans_80.svg | 94 ++++++++------- .../test_mathtext/mathtext_dejavuserif_80.pdf | Bin 9543 -> 9794 bytes .../test_mathtext/mathtext_dejavuserif_80.png | Bin 4322 -> 4289 bytes .../test_mathtext/mathtext_dejavuserif_80.svg | 100 +++++++++------- .../test_mathtext/mathtext_stix_80.pdf | Bin 9710 -> 9960 bytes .../test_mathtext/mathtext_stix_80.png | Bin 3859 -> 3964 bytes .../test_mathtext/mathtext_stix_80.svg | 110 +++++++++-------- .../test_mathtext/mathtext_stixsans_80.pdf | Bin 10372 -> 10630 bytes .../test_mathtext/mathtext_stixsans_80.png | Bin 3739 -> 3946 bytes .../test_mathtext/mathtext_stixsans_80.svg | 102 +++++++++------- lib/matplotlib/tests/test_mathtext.py | 2 +- 17 files changed, 296 insertions(+), 228 deletions(-) diff --git a/lib/matplotlib/mathtext.py b/lib/matplotlib/mathtext.py index 21ac10486c85..0a84030162aa 100644 --- a/lib/matplotlib/mathtext.py +++ b/lib/matplotlib/mathtext.py @@ -2656,11 +2656,12 @@ def symbol(self, s, loc, toks): # Do not space commas between brackets if c == ',': + prev_char, next_char = '', '' for i in six.moves.xrange(1, loc + 1): prev_char = s[loc - i] if prev_char != ' ': break - for i in six.moves.xrange(1, loc + 1): + for i in six.moves.xrange(1, len(s) - loc): next_char = s[loc + i] if next_char != ' ': break diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_80.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_80.pdf index cedb7c898fd1449d2a695fec03386b34de7a1ae7..8e44f24eba2f636853b505843168965681f489c9 100644 GIT binary patch delta 2638 zcmbVOdvHuw7`K~Pu|jkRAxRyQkPY2?&b@p0?oLufh*u+NVuGsa+}+$HYm$3+?%t${ zVws{fr3r_jMA1?89A!O=)~lt}@hBYzGtuhMDAgK`F|^Zj@7`_pk-vIp|2XG6kMH;W ze&6?rZ_@@yhC=e~z?mS@(0zj`EhNMUD0Y+a0y+;&pQ#J-qdNQx%mn=}POZYcq=T@AO?V zvxyegUH!`B%X;EZxZAI8K0LJT>AQ`VKTO^(TZe!7ObyX2l!%vg zO%GguDbs)#rdtAw26&A)xu+$N*(b#qIG=RKfOndD_A0A$DVjK{L=66Y*wAT(9@(c9 zRP!=`W@-%Y6SU-@3TkBp0X5B2p;Y?-qJ!BHR94?X&XmZKo2;_I)hT=}(Oo-f#*@Jc zys}&7kPfktnsKV?YRXKXAb6^(6<}i-ylSwO0aTeH)RwCt3V5%+$U!@x@_lZSgFqV> z@eLXxfFR9bZ$iHwB$;dYDj#5IGj6h^^;S`bxuo$i%TnB&86Q|V3J`S0zi6sR7!O+K#pKgO0_JIC9MJgRq3f001ee8GZl=0M!}6fpP?gEde^nSO-uhs4Ep;V!&?cmdIKTh}-P&Q0!2 z!5(1>;uoeAq-#d&k#(*atp#MJRL!ud+k$bbsAC16TlRPrNd~me#cRBt9W={^5vwhS zhzw~70Un(|cP1psBwa=)aZGi{$k^ykWE_Y$CnOtbd*EyAM;;%1&bx@%0X+`eVf(TvoCuP;8ZW?p9N`qojq zb8^~ai=H9PFFSB^Xq=&wvMdP`HL@&gJz;gpXgxmEaii;!(KOUG9+6$1>;RNkkUdfb zpxjbzEe~c9j_~^IpI|LqtOQOF>7W&t5@qQyb4YDGkv7Pw{VdXk5DG@*?+6JZM(t-& z8(B663{BgJT9Nx`hZYhs{znmHY+Q_E#(^Sy_|1cm6vt~52wjJx6mU{<3=tt1+U(5iuDvUgsF2txY6($XD2E7aoQ-WncHQ+R z4fHUSsvi(NqCq{7s#Ha#s38c|ANazRBHEHtD#WGop(=&;1E_^YsHc!Rv$k<;hy67B z_RV|q{=YZRz7)Qyy}NRtqb>mWU_|YT>S5po5VUjr+Etxfw2%dS>=p2Bs%2@W4y4p; zz|buqq}Kj^t0icumIlOuk#cUCt{YYyYycYvZU_8L)KSyvyOIjqVj8_MP+w2;0seVY z)#EYM)b!9c`nD~m0Y2rxH_^|{T3_6IC*X(i%Gch6!A>@T#|NTj++s0l3jT#?mldIbF~dlHn_KE%srK7OfCLfK zWGd?d$nGD&({>4I0NG6ncoiU-9SHC`K&eh`Y|IFVMJixzvSG?w&g6;5Z#bNoDO#I6 zIjzRw@Y%})kCi$dvb|jIYH*Sr4i9;w=u@WvscjJnP97mQD?G`P8813XL!~GAmowxb zwN;+v*wm+; zpC6auM}5gmcb$VHGpgMLR+o`O?wL*ulPBDBiW0UAnS@rv)HHxuvr<;pO9sH{K@!*c zG#%hH&r}29G*d&Td(v~G+vqickgAH0NBe=07G}F<8my~QT@YnkSR)kEJl)YgjSMYZ znmkfF$uToaNU%GF5h{HcA>#9_DN_I+GJ1Mcun{yiX66&)Lq72=OgwFDd2+oq|FR@(aq$5UPtAaZ6T|x-P8`E(v!cK~Myd{LDial#z^O8wHoCjeCQ!KfeqPEr-zFn+7q%v3$}Q&;#F({2o(&e- zkPjB@6|hWiYVKY*fgkiKv^(jO$kqtaL`lTLB=Q6SWeL&V%}q>&&DRGiJ}F1X1luAA zV!milgmeJs1r#NAr`YoV3>0OlV6P;yp3L?0QqKY#mJ)@IqEaBg4@m`yeUg-aKm@&V zp^cs}FEN5hNn=VpsD!o{n-RIERunqBa%~7H-f>ARQ;lxbO#8Po7~M|)uh46^Lhq*Y l!=5sLZ#N7Jqy`JUv~f!{t$tJM<`71LRLs@X_*VtE{{b{`naBVD diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_80.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_cm_80.png index a54eedcc5eb985f6bd0be90888f3585f1110dc62..09147448dcb8bf0148136f434ed9ba02726f97eb 100644 GIT binary patch literal 4059 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 QIGsbdx#0A4o1`2YX_ literal 3989 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 - + - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_80.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_80.pdf index c456bf519d606e545559012b72031c10555a2073..e63cf1cf468b9bc88557cd3aef6ef9132b735651 100644 GIT binary patch delta 1620 zcmZuweM}o=9Og)&_MqTWz67?sQ$Q+{yL+#9?I9yD*WFt>x+VKFzGY^1{G;Ve_&Nn9;XN0YD*Sas~JXUb$$3MDH`p(Vl|KWnkS3bEq`Rp!g<g@bI-MQgrtvGFV>lXe{)~B2H!uK5B&BEwZ@a~P9 zU55+<@AiD0H)6gscYJ1S{zmZ$p=tQ>eAxv z&W>BxRu}wVTy6jG^FLqNe(L&R$yl)}?>TsXVK?_i;KEq{$i}Jcw|XwEpkv8}1Pq-? z{)PzoQ}+_+w9Xt_*0&OfN--x}1oWLQtJFg4N9$j&ekXWj+tJOrjY(Ihe?4IMZGUHK zb^a$d{rQr^WyYj0Zy8HaSZ_kjsimkq^D_EgUy8ofiDe8J=DDUxH0;Ob{L)+4H1iGDBiY7=WqBcAe8Z&ki$t;8Z!sI?f4l!ynX4v~3 zT69^Fm9c1}sU)r5qx!YlK2ZfU+GWaP_IO-cpC2$VrjOWeqXMELR;{Yy#4HzKNot4a zl~9-IWdjc=pQL&e7rJgLF_M(uGYBZZG$6?U{bPC>(OE_4Kvpi<(I|P`eH!*gKV?D6 zu1VhAfF`M0(f2@O-&T8lcPEy$*-qa5xbxpwk$EVQB$c%4i083!WobG*&>n1p)UN`G5?_=!52M zHXME(CPa3*9%FH1>oE?uw;r={sJd`Rz>4c%OL07%5SFtfVirNblUnP`^IQT(^Fl%n zhGAmu1Rm;<;pl|gnMd>uX&UczZDI)7gv5}wCd7j_7OUWaZy@qynTSXpfKd#_D}1Ox zmgN&B!*UVrtn;;55-UhMS{+iH*r4ikbu=z=8pq8S0IXql5{G7L9d~M5K~f%3a%~Ym+I^+DiBUvtO50 zBPHudO&lZ9u@nMKE`jMF+ns1iNuYtQcF@*FzBE!twD>rUVPyk8LwV94X3o>?&>j7! zH4-g)r+ejtN#Az|Z@6Ci<+WM5XLjN=mn&Dk_`!Pi`KHRyjrYHoz}5W=)Y-F5 zspfOx-O9{1vfxa-Xs?%Z6_T2-;9ogNze z`c(7f>ZN^tW6s<8$%ZTOtpE7-@a@%L@Ll#nv0(McVn2S` zDI50wP)Zr9)V+mZ$=UHBx0KPnAa zrNw;|j%*89N2_WmT1jIZ6-p@3@Rh$7@^~A z%is!MO{80%&Vm5)0!K=cQ+tt;95e0gp^atCL=y*WEc%q3GyqRh_ZSIcKOk`u@r{r3 zZq(9=jD)VFOij0ze1{6t=9rEUfLZ&K@>6nxM0xiow228BK+!G;Ff&Nk0L&U1Fsh;= zz_IoY&8UFO=a|oEfXg~h7DpO=T&msfP z_60eV>zilsH?^Nq5YN@^d{|Gw=9Ffbq9iqspeeR78HYSC@dEy;j&-pj6giO>8d(mP z_**Crclg<)$djAx4^RP}U9h3BUE)?ONDADFg^5U8F^QDD1tY}xioYiva!>_@5K(M% zdXRHsf*2xNZO#h?p`%PTBsw@CB+c1J)Bo!c!uurhw&a^hUvM%9V!UCa|*5qH;FlF7G*3l>(X2Tp^Umxj>(*FY6W5aU* diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_80.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_80.png index 77f201ad7e79daba2523daf124941c359410d2b9..e172fd1b879c7a32a7e90f7d283902cd156b6e6a 100644 GIT binary patch literal 4242 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 D*MmSS diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_80.svg b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_80.svg index ed538515d234..416380a2707f 100644 --- a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_80.svg +++ b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavusans_80.svg @@ -18,8 +18,23 @@ z " style="fill:#ffffff;"/> - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_80.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_80.pdf index dda13decf161c7262757c4b81ea3fd3e8cb140e5..1836c097a2576e5960be16ac1e1ebef68fb0f987 100644 GIT binary patch delta 2272 zcmcIlYfKbZ6z;MjGP+2Ff&#V|M7y9eubsytMFCmFDj=wsm}+O23oOdaGCLsRV{I@d zwrIs$lWNs!+JxG~qF`fdYKykf`bccjXvJ2s{;_Q|wHhkXwD!(J1G}dGI=}9mbMBq* zeBXEOoSlDq!H$LFi(9plDoxTLZ~+QbcD_b&1i7r-+W>tU5cCirJ&LRW)?8QBOErGE z4)Eq{g`{avl>ygzDlM)E*Fjke0=IG0ZBIdgEGzhZIe48QOH`#f0P^wxSyTncxv<6W zgOw$PfLy#b0D+YzacZ$D$-#i6LfN+#skYM4;hm=%zM;l#`J;`P%>J5pu4nbb+^cOl zL(ymEv!`>f9_n7n9sa4X)^j{9u|Jd_de7Nmr~aBJF1y>=1TWkB<(Qp4gO`r3IugC_ zT1?-SD<==OU%qi**OKuA)26J?9E;Yxwc^g7U$x&>T_^S?UKqW9#iV{;f8p`gK4y+~ zER!q<-FbE2n3b_CJVt+0aCLc8GC-{CvXN z)w*|P**OO$>v0{C6F=wOyW*a%;?VUc%PX_q*fg4Ky5~7Ctt_slY)A5qyl-dRTJ$A6hj$U=?VL7Hd;{ zU85awRn1<_u#0XQ7X315+7gdn4QfU8k_sq-ER=%Kuq!rLgS51{3ab8EKvw%}wE7^R z8Pm0<Rf;W&M;tT{B&PZ=K}H}gM8 zoe{4$Htg#n`aAWV-lEtJJ8LxZ6p4hbVTlotd=RjfQZir-WdT_OFv&+j+BgQVlv(Pb zQ9t<5#-k1CnMpYTC8)W1KBoq@P}A#byq95fsj;-1W+}IenNHDYFnyLyKy(IG zA-J&M`U7M@7z;||b&G|^c+7ZsOvGrzVrbEngi)fvxX^bQWg$0)J+i(UVRa0p58Ft9j7x~5XV=fMxcI1Jq$VY$?T<(ZEfr*UqZXpzbP~^BsTHQiK9nW$mg~OQPUHD=P z1IY7{dqt75WGdB7rKysCHB^nutyHd60BhYUm5QPP>z1nWw_&>r=D$x;wN@3@5~5q+ Lh^bSH%RR)u!O5ZI delta 2090 zcmb_cZEO@p7-qp@*=vO&*eku#p-`nQc6VoY@Aj~QwY{q)6bL2QSSxI=bG@y--OJv# zw3T@HffB7ioe&amJ1>Q=d3B(D3vypYzi7TZ>n}ck+|h(WS9d z7j8T`UhHF|H)v_O|2PVdE%^O9YU4wN)XT$sY3lA;*>Pj~#`~G&7 zp4)x+;;mUf|9ZLEI(ex%61q5i`h51b^V@H17U`gfbdHD6uFz4SMl&%u4*1o5Rt&%JG(hGZF5><|H@;eEx>6F@ z;^NoxN+0Als8OOxE$UFWb~O^QST3lUaf|LrT5ykRZB~SA45_$yFwY%mP{V+{M-12+%lY>8^xaaE0f1_V+^C%Ic)Y@4BkbkzcA0lj}+$Oex?Yw<-CF; z%V_LLHfMD(xGBF3kIkLHBkpqC$?n1B1!c)1*HXqq8M<@Sj3Us!LNh6{cR>OEX+aZS zm&Ydnm!go*Lr}MCaVvb2DPERb=c@Kfk?D*+rA;J187@^ z<-%Gw0-}TuE%W3E0HzCq5Dzaq!pOM2WJQ4)5-MXx+*17h$~M%^SG2bZqUa|@@09Q^ zUJ(?i$YKQ#@#T_-7%z4&=i6m^+35##z}f+?hzgl>8Ya2%CXCZ3M@d3<8| zhJ-=}oB9`ol)7mc@5BTj@2C}_&(VsXA&>X@30dSzOqx-csfpxl;uE}%#$NvnnCy29 zqColpWQI%7P!uI%oeXGWKCgptiI*MINsyniA+43X^u3{9MnIX+;J_eEI2y~Oiz88S zHu3Ul3MV!3LT3|2_Dyn=WvW^yGVMpQQR_o85WRq_*Tcl`>FcxEFf5R|2;}0&E!DJo ROcZ7npCqxRrGbq>_FscvUy}d; diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_80.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_dejavuserif_80.png index ae52bed06cb5f6f85acd15fb776bbcc8f3dac50a..d2b3cecb441ac4ea0371a065fb08e1d83a93cfa3 100644 GIT binary patch delta 3872 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 literal 4322 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 - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_80.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stix_80.pdf index 22f414b598f25d920a0920f6bfe0e826898247f0..af60e108b0f1845edb7c68886c2ee987f3ddd7cc 100644 GIT binary patch delta 2224 zcma)7Yitx%6lS*%woA7!`m(KXyLS7az}!2tJF}ZY5n5WY^g&B`38AyQ)7>p}W|^JV zEw8l!B_#ZSTq490El3OjivY-La?9#qJqXiFhLCjbY^!dWtXV;&)j>? zx%Zy)ec!orx8_dm&f4VpeyO@iVkHik0R)Y^YM@0=EUUM-aSjPEiU|-^0xtn7Ja2Nd zP7m(_ba>goN)jjXz_M#NFR4O~<9NvjY@wrWSIwQv^Mbs74Xn}=)uPbh1+!)WqM`{9 zm0YLC!8KOT1H|GkF9%dNA-fifEbsHOBF8(ru&7xO=xZG2M_}UVN2ME`mvrmw%+DQ{ z&UZC#p3q%xTxK2M@XXt_&^5%U7<5TO-7-I@@0M=c}8lCU0pO9sXt8&b$w1PcNSX zPYf0Mvy7L&3iO|MZO=9BHGN-c&#bSj`gHfXFLrG`K5t=Pso3&n(CI%gShTWaWRGt1 z$+vbJ52vNRdo;BswPX9SxLbcEuU<<|*^xyQT;BR#{Hfz3&2x$vKQoekCwbFg&mTcD zz)byS@9Cc8wo{`Q@5P>-uypT|uPu6xclsoeW80OPfRAboS~J3@wJ7+qp+$qI#7qm2 z6eus(t5N=aGwOy7=b-M9OHVW;r0Fiq>U%i&_^iu)usGYXV{lSz{wIrjYxW!c1EzuQ z)!k=$Z#JCqc(2!Px?x}A>fg|ufjliW~!eoSBC^v%9n;6}+F_roq{UVq6`Qf`3Zy$Gu4<_(AeE zd@;E=crayw25(F$!AIg!@MzL+xG&z2)YM^@LSj)QL*dWk3nx{1M4wdQW<>z;k(_+A z)Z>)gK7h!uKEv7y37Al#8brY%do7ArPt>vP96pgFB+!8Ha-v6YVq-2jSx;~tmsqBu6+rBdZL2${^KF$`W$j= z00b=-K-9ASP@VuGXd7z)CCN(8=MX(!Nf70(Tg$q9fFkj_JewAg!4LB?VgsSf$1axK zBF6!wwqm#dfYhe-dHeub!zirhL;;{sR|3Kzw70W>47IzS5abF;6b@?@Iz&LK$hCSp zWslnR;Q~oGGaTsSIyoMYDvBYLNHq)Tbpep!6w1r-olF!&u?-qrn_YtMY9YQSf2(7L zH5A^TWW$4TGOy|X$?KE&>@i+RwW8Et?LsjJm)x7qCu%o^b&WJ45! z5SBuO_ZiDH48CfFE*p|DQwHFHJ~V+=#wwp4VY4cvM%v6W8<93z#yHYugIIW}Ho(ZY zMEJ}$rIKgk%?y;46=9>I^R(FLsN5k#M%{ss(ykB&#utewx$`0}L9`_*84|+K=J9(; zIqS&1Bm<+sAg#>!WaRthL6Hir%6N)6Wu~LhrD$125piZ1jRHf{QD`yd=h#pn`amnA zJQ2?(L!;<8+M>K35pi^M#k4hguhqtc(ZUB!skQ}ts{knVv1k+o`AG~*zR9y*Ry-5_ WtFfZw7r9owtPZ3%ndaA5>Hh}kSB*sg delta 2079 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 lEL`IM+X?G`odNg79mFPonLezp2B%uc*br%ez4 - + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_80.pdf b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_80.pdf index eb6a537b9262a44ca714fe4b6a6cb72acfe28e31..e6484938b079362fb852b8bfd29dc78b80353536 100644 GIT binary patch delta 2719 zcma)8ZBSEJ8a9w>xDXH!V-loCzKSDqzjAMKx0I1jD+mb$E7YRigliILK1{AQv|yy7 zwNuz?&vdO63p&h>t8BY8cGtDDSY|q|b~8d?oK2)7l?&sH=d6wsZ4q%|}a1}-&XoJzx!dZEs7a@RFxLrIT zLu0d@ZFab9fDV0{Sf1y+EaOm&+}DZvjmRy58&FeNSX&~I67yMM6%>)6-(+Kymua=dBi>+ZJH z)_1|4XR-@2W;(8Jy0vKL?)u7?c3!Xed%;(&*-ne|&*o1+e~EmJvDfkA^ut4cy0hQV zcBSyfVDR!ghks~4Qd6`iaPeNjrSZJ)>KpSP-l&^+=dCRWy81--;2*p77w>O<)_KUU zC8yu`5Z%B1)Fk^s?#SiFd*lCk(Eq~k{6`xaYwxao=s&1E`OS%MirRe%*3lbRrp~LV zwzC62n{Divx^%nmy%Vi_t5zgFm7nSuE;*Q%^h{4;f5)-&?N_fAT`$^pqkkkYR{s0( z_DQm7cHg?M6t6C}XT5q~v9V{}g_5F7`;oDpy^4aYy$=?B*=$-uX;UiS9Jr?VWdfJC z@1?kpl9#P(&nvx~JalQGL1q29qW|Tt%$`Lh+)huw=X#bQUp|RkNKMJU!8ya#Wi+c+yM{o%l!P_&HE`X8V&{-+v#iwSIteLvrWaxOD~9 zHPAJ9y6^Q0W$}T(_}`|6zo;*!F0_2!yXpF;x0J~~yf^q+-^7{8MW*^L3VeS4nUcTyV{Xo_6O#hjjGo9NyM+R=1MjW1N z)g5D&R@?9^n-ZH<-;#G)e=&XacCuztUsW@v?JG0>RWrVOyH=;nskUwE{g(ApPbAb% zC!{?;+=1LI8@W2OWR*Ji7CfAus>T*%J*zarEs4`=e8GrqNygwGlAugYEEqDCRs-vo zJ2isn1+0e8CmZ3}H~7h9z|WW0z||^O3_-z8SswJHjzUv%!n{O0z04Rqy38zt zucau}5jlFCOoGup%I1eFN@Vch5@q7!NUe2v8Fk*Q%exYR2FYIQrEEFdJ_0zvquDh+na(t`<4 zm}D^|DOvqlEDHarQ407!SB+3%E9_M4kBm?>*GRhm2oZX zbGyt!uLWq>R6@Kp3z|xbwI`Tb!#X+mwjGNc;g8K%@c2;0A&9Jd7ZOcYQvl6H-4P zqlJXd#~7hSMPe963ss9@aAhtXh~Apg>7po51Su_lC~Q>fgiI1;0yw39^S83FM)k}^c8BlXdT=rFO`A_?kr`Y3gV zu)%ZP(i=jiM_`mLAQW@th72w~g^?Id30G)7#)zFLGER?SQET-?^je12h10Y_EIr=K zI$q?w(mTGvwZjd_@Snvxw_9kUq3dRLye!-{edzIJy}aMc?LZg-FSisKihj*TUzrO`xaj%I_ClUAaoPK~6McHcvx-N!%eA3OJ+d+s^s zp7T5Bt#PlOvAHBvo$Ug++soJb#5%wN0+eHTWogYq!6O5kvITek7?uUatw}rY{#4Xz zJLNxRzp>o#c3Yhs(-WN-s(5ht$(5cn8Eel^o$#b;MbCvtP1X7Pj~b3Ot(}pASIqlo zJ03iAule5fgO<`Kr?>5J=Poar{dC*R5AwR_h6)D-f77irIfjR1=VtSb_SxMj9~R$t zWo`Y=>pW~;wcXf~^6iANdA}wPPiy&}Rnf3#_7nPKG*X_QW zb71$KlCr9#%eta9FSnfH4wXMPHoy4JQ`i=h0(TCMjbk`W5NrK43o(*~t8`hAG~rRC zOF0)SL8grQNH!`+QFvI>rZ z4~^k@d_Yj>ghum9V=q!Ftk5|$BZyDu>k(s4VIe=O(T(84aFb$aIpt67ImWBFRip;f`uL}SgsTv&t z4{8R$Q5*)pF;kGX423f+1g1Jv>{r1}7H4aRrDHIx8WBIW7LaP+035Z6M*yVSoB-zm zX;(wUML_m;Xn(L2(-$l}Vkk|(`%>icOZD)n;V*bKAr7WuB@suhJhnymg5u)&Q>O`H zo$N&}IB3E0Bh(=o-wEGLj)NV8r$rv6=_{isrH)x}y(tkUB_4$*&2g|RQR8!bQiaY) z6Mar$LfrI7YgKWgktX|9ObHqlZ-U>5Qv5u0_+E14!&`49=j&jMDIPkaHBoGccIn`J zbhc5iIlHDW){Ub2ZKIO+fk>${PysQaFUu;3P)->QyHaMe^FVIy^Vz0=h=@b~P9flt zd=0W+0+jMFG-0Rl&p4#4Rsh>l(kuhRNh!H1M^@p3*i=_Pj3mMRFBqS(ND@{n2G`gG(imm{#VAJfc0e<*I%As73R^PLM@SwryTKoj?Hrd~D=Z-<*42=OwJg3Omt9CI^?AkCo6DnB3sOkEImjzLd~l-W^>gv&UBKwTIqqfn1V${5to z;WC0?(enuc8pp9gLUV;;tO$_sD-@-bk?1{%?YfHF>kK+5l~|Qu^><>|A)>g32*%wP_5}oHEtIFEfnRAY;=Oj6r3OylW*{O}4Bo z8AP0gJF(goIKyQuL2IhWGOUIQ*3M~U9E14kvnNZuZ?Pb$pB1<7bpf>y3-BUwfgjLn iPXN5!@0UUEh(IGgAoG&ER1y|ooYh8S85sqoF6>|W2=9&n diff --git a/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_80.png b/lib/matplotlib/tests/baseline_images/test_mathtext/mathtext_stixsans_80.png index 1e0daf1e9293cc1dd8e206889e3fa8fda424e120..02a1ed4873ccec5181b7d0ed41dbceaf85e790d6 100644 GIT binary patch literal 3946 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 literal 3739 zcmd5}F5>s$W+{`$Ui&35LTbDi_t&;8u@{Y$)VVZ_NU$PR%(I8BTZ)({9I zC-`l~$^t&u<7>OY7c=Uri47~*!dX2Mz&_i3V+Rxj!sUAMW_YDrb{7IU3pYXhZ4-=J z8Vxglx+!-0H`l`kkxwr}m^ll|pTrkcjIf@!N%APlbP5r`+fh9iD9=$a{Xpk;H~pSx z@KnHZ6{NWPuF=!)sq=iij^GLKU=Nh3#GuBSb@|CF!ab8XrC`|ZKFNi)JFPRmvVNFH zpS;|>vW{C9z6H@s0Gsgr2U};vB_#`unDm*TP^hfy9k3_)2L~qtfhdkGhz93m{-w$d zg{Ga0X8}j7KlbW@L#F(K;D|BX|M^An$id26=XiK7iin8xJd#Cha5rf0pXx0ld#H3x zwqZP1r`o5crrZerC{zs(509~<LUA`9UbL6Q^oio)wf$21vLC{qpMp> zG#RDlgX;OsP~u_G%9sKtC+F~beZ6KP7F#p_eRx=|%rgHOmQU%6nG&hE?s$vl-%q3Y zs(IbGksTWsN5xe&H951NIaBiX?KLlQp29z67Ik;3%FEMYViL+l!#gnLH8uYT3JINxvOb>tkpS}^z&4~&dW;u3Mvg-{`=rM>xY&DH})-8E12g9j3qF0n3B-ZDY>lMO*(({+Q+H8AIh2)JnEK|qPY zZECe=0v0P&9ntsCe@&R14ezN)OG;IHLh5s{UZonKsJf`lJ#4*uTS>Uir&_|=48 zSn%=i_MToR>l%4^N%!Pxd)K(w+VX2@|6W~@ih(QXCL}DF&;ElbMx;kYp7(8RPis!#=1`}1yM===8=@e18 zPff(i7zxy;clT~NNx$yhJ*vt@85u6>^5P;EhZ9~32?=Syx6IAVh-+%zaAZAgo~y+x zq<#+q!NJ2WNX7v2`z%RkuoV;(+!S+MTU!&C1c+WmqigZTO@~`FyNJswD&mquO%d8U zIyyi(82tVHcXoCrX1X$N>OO9bnwjxPVEx$E1{D=edGFpimHTkaik-8q9E$3B&4=11 z1_=)&1M+jHNpWzZ$u@kkjg4AZ`qI+U@3pn7etwm<;{fC&5$y{u;j3}BjzK}{2Zx7N zHa0W&p*NZz!4b>=nvWks*8kjlZY~{*!MFoDYDOOESl~3HX#{^7JU%Z^l$n`%g1FKo zR89UEcSadGtUA*8;0zLpG&VNw9ee9H^o}7z#u7j5y}LGh<3q4=)REaSDA+FI%FYB6 zaV50MsUc>aPWB}y8%p7kG!|&<>U5{V-r3mr>}>uY6bj?~@jj4AacOD8#qHTFm#c_( z-egfEO=CQqiI0zOHdO|)30R*Ls{Byb*Qms=8}=qXLD==q%P{ryQw$JFo}`4t-^5z2m!+jFTDfQUx0dvg$hU0K?`x7hkMz zXmH(L9)(2p_gg2hN}Fdxl$4Y}xhK4A=MD7Q3R*- ze@=wh%d6DG(=(AkAmB-bg;zULMCAMW`T`ez$Wm+XW>8r4`uqDYUb*6IS8=02H5F_C zPGeKkf5Ek%pR4(L47|1t+}}dVDk$(m(_&+p@A~+pKYMne>&ut)jSX~HSJ!*k*ogs* zeF!i9L<12Ao(Wx`j1B%P@P`K zpz~NdAc>nwPH|576!Y z!9f|rA}a&}l(Vt9Df^8SFl`8h!Xox+RW&rQ0Iy#o4gZ9Pha(Ud6%?*Hhs^TA(DP3Q znn0J*v$AB$%gcl4U|dMTut0>Iy!`Ci?AQK*fj>-4Ox#oj4a&ZE0mYCDB{^GLTVGUE zv=9^&{6r>OI^rJ3#1uC)P<=+gRK7UV8ujgk#@84AO|lFO4AoxW1gVV=-rO5+y0sBX z;^$y_vCkpA4Y40QiaZCN6VRC*!p6Z-J4~kFPqzb=^DC|^x~VaTv(-nOh3%T2KIG!> zDWL-~HqTKxg_`Sr-iC!MwY>3)yStRFqT~b9Hq++bJ|br(^t^4=*@4IPk+m zYi;)dDSnTj$PP&Iw{H)E6C3L4c=Ph|hJ9J~nj2OoC!>J_W1CnWGk}-w(T)^ww7#Js zR>}ekcgc-isAY zTQC+~-8q+M=lhC=iRiQ=vvJ@EQi3SWBhLTq7?@?8!%4@q>p;+=5REgsVu8i`Z1*u8 zAFA&GVX<;@s(@DljRYkZmzEY57BT|Z`4pX6Hhz9r_N7!v&_xc~@vSJz;GjDI`I3Ty zfu$waqup6PFjB6qF{g(4YrMVzQ&9zF_YDlhiD(C%2-uV&Gh}{YA*Q*xxgB{QKc^~~ z96XgM^8|-W0(?9P0&utpXnTFo(sR6vySo&~G%+nLdc`Fr4x`h}clsnx+-$JQ#mLuJ z{+W`?S(0;VX=$kh*(f|*2PB!tAh3ZEW&m{K*L|b|jKv6D!TPbDN!{ErTHUsY9!1&+01TP9#2V>||0hBOBrae^C2kwQgHO`@x-t2f1R zExgz5*HeUHj6lP|kUQQJ(~*H>W@d`Z$(ahFHs<>@gMW)h9i4KW*k;TNUo-hNN*tVf zucoRh4hC3AN=Ij8l5iw1C&w)yP@ZcK;@dA8feVPP)LBl*JNM4BNrGyoLK?ENZ21ve zR5*skk?t3Dd7*ve@OAFwkN>gcjTQj2>uBSHo&A;Or`zR~l^qQzdVF1K5zN=ucNP3e zBc&bz!MdcVh~HB#U;w$MK4iUg4QE&cwY9a~0oh35QPe8}fe+~ItMYOytvrBgW>yy0 zViu3Qyu6jQwOfGi6v+pPGzbV-eL}xoY-lYtCyD@0GB_;Y2T-=-gi@y&FCC>`Mzq=3 z*-0B17_3cV!~!j - + - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/lib/matplotlib/tests/test_mathtext.py b/lib/matplotlib/tests/test_mathtext.py index fe3fe18ac4ce..38762987cd9a 100644 --- a/lib/matplotlib/tests/test_mathtext.py +++ b/lib/matplotlib/tests/test_mathtext.py @@ -105,7 +105,7 @@ ' '.join('$\\' + p + '$' for p in sorted(mathtext.Parser._snowflake)), r'$6-2$; $-2$; $ -2$; ${-2}$; ${ -2}$; $20^{+3}_{-2}$', r'$\overline{\omega}^x \frac{1}{2}_0^x$', # github issue #5444 - r'$1{,}234{, }567{ , }890$ and $1,234,567,890$', # github issue 5799 + r'$,$ $.$ $1{,}234{, }567{ , }890$ and $1,234,567,890$', # github issue 5799 ] digits = "0123456789" From 70b851fef0ca4044c16f2802090a2a1c1f059f01 Mon Sep 17 00:00:00 2001 From: Nelle Varoquaux Date: Mon, 4 Jul 2016 16:10:56 -0700 Subject: [PATCH 5/9] Merge pull request #6688 from afvincent/fix_polar_scatter_demo DOC: fix radial increase of size & OO style in polar_scatter_demo --- examples/pie_and_polar_charts/polar_scatter_demo.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/pie_and_polar_charts/polar_scatter_demo.py b/examples/pie_and_polar_charts/polar_scatter_demo.py index db8ece939887..71992f3c458c 100644 --- a/examples/pie_and_polar_charts/polar_scatter_demo.py +++ b/examples/pie_and_polar_charts/polar_scatter_demo.py @@ -1,8 +1,8 @@ """ Demo of scatter plot on a polar axis. -Size increases radially in this example and color increases with angle (just to -verify the symbols are being scattered correctly). +Size increases radially in this example and color increases with angle +(just to verify the symbols are being scattered correctly). """ import numpy as np import matplotlib.pyplot as plt @@ -11,11 +11,11 @@ N = 150 r = 2 * np.random.rand(N) theta = 2 * np.pi * np.random.rand(N) -area = 200 * r**2 * np.random.rand(N) +area = 200 * r**2 colors = theta ax = plt.subplot(111, projection='polar') -c = plt.scatter(theta, r, c=colors, s=area, cmap=plt.cm.hsv) +c = ax.scatter(theta, r, c=colors, s=area, cmap=plt.cm.hsv) c.set_alpha(0.75) plt.show() From 1e437d347fbe16264834f0a7a283389d2d4be9a3 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 28 Oct 2015 18:45:07 -0400 Subject: [PATCH 6/9] Merge pull request #5324 from mdboom/transparent-jpg Fix #5302: Proper alpha-blending for jpeg Conflicts: lib/matplotlib/tests/test_image.py --- lib/matplotlib/backends/backend_agg.py | 11 +++++++-- lib/matplotlib/tests/test_image.py | 31 ++++++++++++++++++++++++-- 2 files changed, 38 insertions(+), 4 deletions(-) diff --git a/lib/matplotlib/backends/backend_agg.py b/lib/matplotlib/backends/backend_agg.py index 0a26650164a3..ff7ccb461a1b 100644 --- a/lib/matplotlib/backends/backend_agg.py +++ b/lib/matplotlib/backends/backend_agg.py @@ -38,6 +38,7 @@ from matplotlib.mathtext import MathTextParser from matplotlib.path import Path from matplotlib.transforms import Bbox, BboxBase +from matplotlib import colors as mcolors from matplotlib.backends._backend_agg import RendererAgg as _RendererAgg from matplotlib import _png @@ -571,7 +572,6 @@ def print_to_buffer(self): return result if _has_pil: - # add JPEG support def print_jpg(self, filename_or_obj, *args, **kwargs): """ @@ -593,14 +593,21 @@ def print_jpg(self, filename_or_obj, *args, **kwargs): buf, size = self.print_to_buffer() if kwargs.pop("dryrun", False): return + # The image is "pasted" onto a white background image to safely + # handle any transparency image = Image.frombuffer('RGBA', size, buf, 'raw', 'RGBA', 0, 1) + color = mcolors.colorConverter.to_rgb( + rcParams.get('savefig.facecolor', 'white')) + color = tuple([int(x * 255.0) for x in color]) + background = Image.new('RGB', size, color) + background.paste(image, image) options = restrict_dict(kwargs, ['quality', 'optimize', 'progressive']) if 'quality' not in options: options['quality'] = rcParams['savefig.jpeg_quality'] - return image.save(filename_or_obj, format='jpeg', **options) + return background.save(filename_or_obj, format='jpeg', **options) print_jpeg = print_jpg # add TIFF support diff --git a/lib/matplotlib/tests/test_image.py b/lib/matplotlib/tests/test_image.py index f2d5fb019010..d9bccee46b23 100644 --- a/lib/matplotlib/tests/test_image.py +++ b/lib/matplotlib/tests/test_image.py @@ -15,7 +15,7 @@ from matplotlib.image import (BboxImage, imread, NonUniformImage, AxesImage, FigureImage, PcolorImage) from matplotlib.transforms import Bbox, Affine2D, TransformedBbox -from matplotlib import rcParams +from matplotlib import rcParams, rc_context from matplotlib import patches import matplotlib.pyplot as plt @@ -35,7 +35,6 @@ try: from PIL import Image - del Image HAS_PIL = True except ImportError: HAS_PIL = False @@ -494,6 +493,34 @@ def test_nonuniformimage_setnorm(): im.set_norm(plt.Normalize()) +@knownfailureif(not HAS_PIL) +@cleanup +def test_jpeg_alpha(): + plt.figure(figsize=(1, 1), dpi=300) + # Create an image that is all black, with a gradient from 0-1 in + # the alpha channel from left to right. + im = np.zeros((300, 300, 4), dtype=float) + im[..., 3] = np.linspace(0.0, 1.0, 300) + + plt.figimage(im) + + buff = io.BytesIO() + with rc_context({'savefig.facecolor': 'red'}): + plt.savefig(buff, transparent=True, format='jpg', dpi=300) + + buff.seek(0) + image = Image.open(buff) + + # If this fails, there will be only one color (all black). If this + # is working, we should have all 256 shades of grey represented. + num_colors = len(image.getcolors(256)) + assert 175 <= num_colors <= 185, 'num colors: %d' % (num_colors, ) + # The fully transparent part should be red, not white or black + # or anything else + corner_pixel = image.getpixel((0, 0)) + assert corner_pixel == (254, 0, 0), "corner pixel: %r" % (corner_pixel, ) + + @cleanup def test_nonuniformimage_setdata(): ax = plt.gca() From 1f20eda598a3111daf2b87a63ec303580e3729a8 Mon Sep 17 00:00:00 2001 From: Thomas A Caswell Date: Wed, 14 Sep 2016 14:52:06 -0400 Subject: [PATCH 7/9] Merge pull request #7108 from hamogu/patch-3 DOC: Typos in ticker.py Conflicts: lib/matplotlib/ticker.py --- lib/matplotlib/ticker.py | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/lib/matplotlib/ticker.py b/lib/matplotlib/ticker.py index ff0a71d156d2..a88e47c1551c 100644 --- a/lib/matplotlib/ticker.py +++ b/lib/matplotlib/ticker.py @@ -6,7 +6,7 @@ locating and formatting. Although the locators know nothing about major or minor ticks, they are used by the Axis class to support major and minor tick locating and formatting. Generic tick locators and -formatters are provided, as well as domain specific custom ones.. +formatters are provided, as well as domain specific custom ones. Default Formatter @@ -80,6 +80,9 @@ tick interval into a specified number of minor intervals, defaulting to 4 or 5 depending on the major interval. +:class:`LogitLocator` + Locator for logit scaling. + There are a number of locators specialized for date locations - see the dates module @@ -132,8 +135,18 @@ :class:`LogFormatter` Formatter for log axes -:class:`EngFormatter` - Format labels in engineering notation +:class:`LogFormatterExponent` + Format values for log axis using ``exponent = log_base(value)``. + +:class:`LogFormatterMathtext` + Format values for log axis using ``exponent = log_base(value)`` + using Math text. + +:class:`LogFormatterSciNotation` + Format values for log axis using scientific notation. + +:class:`LogitFormatter` + Probability formatter. You can derive your own formatter from the Formatter base class by From 9b2314f60eb35886a71fb5b03e55327384a50ab2 Mon Sep 17 00:00:00 2001 From: Nelle Varoquaux Date: Wed, 5 Oct 2016 14:14:48 -0700 Subject: [PATCH 8/9] Merge pull request #7222 from greg-roper/master Catch IO errors when building font cache --- lib/matplotlib/font_manager.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/matplotlib/font_manager.py b/lib/matplotlib/font_manager.py index a7837b10aa13..45e9f3973f43 100644 --- a/lib/matplotlib/font_manager.py +++ b/lib/matplotlib/font_manager.py @@ -594,6 +594,9 @@ def createFontList(fontfiles, fontext='ttf'): verbose.report("Cannot handle unicode filenames") # print >> sys.stderr, 'Bad file is', fpath continue + except IOError: + verbose.report("IO error - cannot open font file %s" % fpath) + continue try: prop = ttfFontProperty(font) except (KeyError, RuntimeError, ValueError): From f4152cefaff01621b025eaa6267e8122ea0e7c07 Mon Sep 17 00:00:00 2001 From: Nelle Varoquaux Date: Tue, 27 Sep 2016 14:22:07 -0700 Subject: [PATCH 9/9] Merge pull request #7031 from DoriekeMG/doc_semilogx DOC Replaced documentation with numpydoc for semilogx --- lib/matplotlib/axes/_axes.py | 43 ++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index 16f7e4c6c1f2..c7f89c6b0403 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -1565,38 +1565,43 @@ def semilogx(self, *args, **kwargs): """ Make a plot with log scaling on the *x* axis. - Call signature:: - - semilogx(*args, **kwargs) - - :func:`semilogx` supports all the keyword arguments of - :func:`~matplotlib.pyplot.plot` and - :meth:`matplotlib.axes.Axes.set_xscale`. - - Notable keyword arguments: - - *basex*: scalar > 1 - Base of the *x* logarithm + Parameters + ---------- + basex : float, optional + Base of the *x* logarithm. The scalar should be larger + than 1. - *subsx*: [ *None* | sequence ] + subsx : array_like, optional The location of the minor xticks; *None* defaults to autosubs, which depend on the number of decades in the plot; see :meth:`~matplotlib.axes.Axes.set_xscale` for details. - *nonposx*: [ 'mask' | 'clip' ] + nonposx : string, optional, {'mask', 'clip'} Non-positive values in *x* can be masked as - invalid, or clipped to a very small positive number + invalid, or clipped to a very small positive number. - The remaining valid kwargs are + Returns + ------- + `~matplotlib.pyplot.plot` + Log-scaled plot on the *x* axis. + + Other Parameters + ---------------- :class:`~matplotlib.lines.Line2D` properties: %(Line2D)s - .. seealso:: + See Also + -------- + loglog : For example code and figure. + + Notes + ----- + This function supports all the keyword arguments of + :func:`~matplotlib.pyplot.plot` and + :meth:`matplotlib.axes.Axes.set_xscale`. - :meth:`loglog` - For example code and figure """ if not self._hold: self.cla()