From dda42abd96332578d6764c8f00ae6f520f0691bd Mon Sep 17 00:00:00 2001 From: David Stansby Date: Mon, 3 Jul 2017 21:26:48 +0100 Subject: [PATCH 1/5] Change default behaviour of setting logscale to 'mask' --- doc/api/api_changes/2017-07-03-DS-logscale_masked.rst | 8 ++++++++ lib/matplotlib/axes/_axes.py | 2 -- lib/matplotlib/axes/_base.py | 8 ++++---- 3 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 doc/api/api_changes/2017-07-03-DS-logscale_masked.rst diff --git a/doc/api/api_changes/2017-07-03-DS-logscale_masked.rst b/doc/api/api_changes/2017-07-03-DS-logscale_masked.rst new file mode 100644 index 000000000000..ec952c30c726 --- /dev/null +++ b/doc/api/api_changes/2017-07-03-DS-logscale_masked.rst @@ -0,0 +1,8 @@ +Default behavior of log scales changed to mask <= 0 values +`````````````````````````````````````````````````````````` + +Calling `matplotlib.Axes.set_xscale` or `matplotlib.Axes.set_yscale` now uses +'mask' as the default method to handle invalid values (as opposed to 'clip'). +This means that any values <= 0 on a log scale will not be shown. + +Previously they were clipped to a very small number and shown. diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index bfbf81bc67be..d3d7287852fe 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -1578,7 +1578,6 @@ def semilogx(self, *args, **kwargs): self.cla() d = {'basex': kwargs.pop('basex', 10), 'subsx': kwargs.pop('subsx', None), - 'nonposx': kwargs.pop('nonposx', 'mask'), } self.set_xscale('log', **d) @@ -1629,7 +1628,6 @@ def semilogy(self, *args, **kwargs): self.cla() d = {'basey': kwargs.pop('basey', 10), 'subsy': kwargs.pop('subsy', None), - 'nonposy': kwargs.pop('nonposy', 'mask'), } self.set_yscale('log', **d) b = self._hold diff --git a/lib/matplotlib/axes/_base.py b/lib/matplotlib/axes/_base.py index 3dab3749ebf0..e5f189c94b62 100644 --- a/lib/matplotlib/axes/_base.py +++ b/lib/matplotlib/axes/_base.py @@ -2961,10 +2961,10 @@ def set_xscale(self, value, **kwargs): matplotlib.scale.LogisticTransform : logit transform """ - # If the scale is being set to log, clip nonposx to prevent headaches + # If the scale is being set to log, mask nonposx to prevent headaches # around zero if value.lower() == 'log' and 'nonposx' not in kwargs: - kwargs['nonposx'] = 'clip' + kwargs['nonposx'] = 'mask' g = self.get_shared_x_axes() for ax in g.get_siblings(self): @@ -3255,10 +3255,10 @@ def set_yscale(self, value, **kwargs): matplotlib.scale.LogisticTransform : logit transform """ - # If the scale is being set to log, clip nonposy to prevent headaches + # If the scale is being set to log, mask nonposy to prevent headaches # around zero if value.lower() == 'log' and 'nonposy' not in kwargs: - kwargs['nonposy'] = 'clip' + kwargs['nonposy'] = 'mask' g = self.get_shared_y_axes() for ax in g.get_siblings(self): From 089da7afe2a9c84db3f3f15f369f17a6a47f0248 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Mon, 3 Jul 2017 21:27:00 +0100 Subject: [PATCH 2/5] Add logscale mask test --- .../test_scale/logscale_mask.png | Bin 0 -> 12163 bytes lib/matplotlib/tests/test_scale.py | 13 +++++++++++++ 2 files changed, 13 insertions(+) create mode 100644 lib/matplotlib/tests/baseline_images/test_scale/logscale_mask.png diff --git a/lib/matplotlib/tests/baseline_images/test_scale/logscale_mask.png b/lib/matplotlib/tests/baseline_images/test_scale/logscale_mask.png new file mode 100644 index 0000000000000000000000000000000000000000..0f142c315729ea11bb8cca96ca2c211fae04634a GIT binary patch literal 12163 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 literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/test_scale.py b/lib/matplotlib/tests/test_scale.py index 45ec7557ee88..e23ba8fcdd51 100644 --- a/lib/matplotlib/tests/test_scale.py +++ b/lib/matplotlib/tests/test_scale.py @@ -52,3 +52,16 @@ def test_logscale_subs(): ax.set_yscale('log', subsy=np.array([2, 3, 4])) # force draw fig.canvas.draw() + + +@image_comparison(baseline_images=['logscale_mask'], remove_text=True, + extensions=['png']) +def test_logscale_mask(): + # Check that zero values are masked correctly on log scales. + # See github issue 8045 + xs = np.linspace(0, 50, 1001) + + fig, ax = plt.subplots() + ax.plot(np.exp(-xs**2)) + fig.canvas.draw() + ax.set(yscale="log") From 029fe210fed5dbab072537bbe692fc7cc533a58f Mon Sep 17 00:00:00 2001 From: David Stansby Date: Mon, 3 Jul 2017 21:31:35 +0100 Subject: [PATCH 3/5] Add note to errobar --- doc/api/api_changes/2017-07-03-DS-logscale_masked.rst | 6 +++--- lib/matplotlib/axes/_axes.py | 4 ++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/doc/api/api_changes/2017-07-03-DS-logscale_masked.rst b/doc/api/api_changes/2017-07-03-DS-logscale_masked.rst index ec952c30c726..5de845f90a7c 100644 --- a/doc/api/api_changes/2017-07-03-DS-logscale_masked.rst +++ b/doc/api/api_changes/2017-07-03-DS-logscale_masked.rst @@ -1,8 +1,8 @@ Default behavior of log scales changed to mask <= 0 values `````````````````````````````````````````````````````````` -Calling `matplotlib.Axes.set_xscale` or `matplotlib.Axes.set_yscale` now uses -'mask' as the default method to handle invalid values (as opposed to 'clip'). -This means that any values <= 0 on a log scale will not be shown. +Calling `matplotlib.axes.Axes.set_xscale` or `matplotlib.axes.Axes.set_yscale` +now uses 'mask' as the default method to handle invalid values (as opposed to +'clip'). This means that any values <= 0 on a log scale will not be shown. Previously they were clipped to a very small number and shown. diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index d3d7287852fe..85877358e754 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -2751,6 +2751,10 @@ def errorbar(self, x, y, yerr=None, xerr=None, %(Line2D)s + Notes + ----- + Error bars with negative values will not be shown when plotted on a + logarithmic axis. """ kwargs = cbook.normalize_kwargs(kwargs, _alias_map) # anything that comes in as 'None', drop so the default thing From 55863be5a4f626468bd43cd4d019deeb1e462efe Mon Sep 17 00:00:00 2001 From: David Stansby Date: Tue, 4 Jul 2017 09:06:56 +0100 Subject: [PATCH 4/5] Add new test image --- .../baseline_images/test_axes/log_scales.png | Bin 13681 -> 13712 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/lib/matplotlib/tests/baseline_images/test_axes/log_scales.png b/lib/matplotlib/tests/baseline_images/test_axes/log_scales.png index 876b47caedb6f53a02eb9dd4f84da942810821b7..9e68e62fd75dd87bffee3f4ab5d97f63fcaa2f09 100644 GIT binary patch literal 13712 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 Date: Thu, 6 Jul 2017 09:47:22 +0100 Subject: [PATCH 5/5] Update log_scales svg --- .../baseline_images/test_axes/log_scales.svg | 138 +++++++++--------- 1 file changed, 71 insertions(+), 67 deletions(-) diff --git a/lib/matplotlib/tests/baseline_images/test_axes/log_scales.svg b/lib/matplotlib/tests/baseline_images/test_axes/log_scales.svg index 2e63e7be1870..596ba00f9b67 100644 --- a/lib/matplotlib/tests/baseline_images/test_axes/log_scales.svg +++ b/lib/matplotlib/tests/baseline_images/test_axes/log_scales.svg @@ -27,8 +27,7 @@ z " style="fill:#ffffff;"/> - +" id="m368fc901b1" style="stroke:#000000;stroke-width:0.5;"/> - + +" id="mc63e59a608" style="stroke:#000000;stroke-width:0.5;"/> - + @@ -142,6 +141,7 @@ Q 56.59375 19.140625 48.40625 8.859375 Q 40.234375 -1.421875 26.421875 -1.421875 Q 22.703125 -1.421875 18.890625 -0.6875 Q 15.09375 0.046875 10.984375 1.515625 +z M 30.609375 32.421875 Q 37.25 32.421875 41.125 36.953125 Q 45.015625 41.5 45.015625 49.421875 @@ -151,6 +151,7 @@ Q 23.96875 66.40625 20.09375 61.84375 Q 16.21875 57.28125 16.21875 49.421875 Q 16.21875 41.5 20.09375 36.953125 Q 23.96875 32.421875 30.609375 32.421875 +z " id="DejaVuSans-39"/> @@ -181,12 +184,12 @@ Q 19.53125 74.21875 31.78125 74.21875 - + - + @@ -215,12 +218,12 @@ z - + - + @@ -248,6 +251,7 @@ Q 53.21875 48.921875 51.53125 44.890625 Q 49.859375 40.875 45.40625 35.40625 Q 44.1875 33.984375 37.640625 27.21875 Q 31.109375 20.453125 19.1875 8.296875 +z " id="DejaVuSans-32"/> @@ -261,176 +265,176 @@ Q 31.109375 20.453125 19.1875 8.296875 +" id="mce6b333cae" style="stroke:#000000;stroke-width:0.5;"/> - + +" id="m8d518e7239" style="stroke:#000000;stroke-width:0.5;"/> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -441,20 +445,20 @@ L 0 2 +" id="m556f96d829" style="stroke:#000000;stroke-width:0.5;"/> - + +" id="m27e32ca04a" style="stroke:#000000;stroke-width:0.5;"/> - + @@ -509,12 +513,12 @@ z - + - + @@ -530,12 +534,12 @@ z - + - + @@ -553,104 +557,104 @@ z +" id="mb12535d6a8" style="stroke:#000000;stroke-width:0.5;"/> - + +" id="m8a2e629618" style="stroke:#000000;stroke-width:0.5;"/> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -658,7 +662,7 @@ L -2 0 - + pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy