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 - +