From c1ea241f169df375ad781fb0461704ad5dd9db06 Mon Sep 17 00:00:00 2001 From: Antony Lee Date: Thu, 20 Jun 2019 11:26:13 +0200 Subject: [PATCH] Make logscale bar/hist autolimits more consistents. The bottom limit of log-scaled bar/hist plots now defaults to applying normal margins (possibly with null limits expansion) to the data limits, rather than being hardcoded to 1/log_base. See changelog. Delete two tests that asserted that the lower limit was at 1/log_base. --- doc/api/next_api_changes/2019-06-19-AL.rst | 10 + lib/matplotlib/axes/_axes.py | 53 +- .../test_axes/hist_step_log_bottom.png | Bin 7597 -> 0 bytes .../test_axes/hist_steplog.pdf | Bin 12434 -> 0 bytes .../test_axes/hist_steplog.png | Bin 13185 -> 0 bytes .../test_axes/hist_steplog.svg | 3544 ----------------- lib/matplotlib/tests/test_axes.py | 56 +- 7 files changed, 29 insertions(+), 3634 deletions(-) create mode 100644 doc/api/next_api_changes/2019-06-19-AL.rst delete mode 100644 lib/matplotlib/tests/baseline_images/test_axes/hist_step_log_bottom.png delete mode 100644 lib/matplotlib/tests/baseline_images/test_axes/hist_steplog.pdf delete mode 100644 lib/matplotlib/tests/baseline_images/test_axes/hist_steplog.png delete mode 100644 lib/matplotlib/tests/baseline_images/test_axes/hist_steplog.svg diff --git a/doc/api/next_api_changes/2019-06-19-AL.rst b/doc/api/next_api_changes/2019-06-19-AL.rst new file mode 100644 index 000000000000..9d00100dc096 --- /dev/null +++ b/doc/api/next_api_changes/2019-06-19-AL.rst @@ -0,0 +1,10 @@ +log-scale bar() / hist() autolimits change +`````````````````````````````````````````` + +The autolimits computation in `~.Axes.bar` and `~.Axes.hist` when the axes +already uses log-scale has changed to match the computation when the axes is +switched to log-scale after the call to `~.Axes.bar` and `~.Axes.hist`, and +when calling ``bar(..., log=True)`` / ``hist(..., log=True)``: if there are +at least two different bar heights, add the normal axes margins to them (in +log-scale); if there is only a single bar height, expand the axes limits by one +order of magnitude around it and then apply axes margins. diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index 44467581f446..ccda3de44657 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -2303,20 +2303,12 @@ def bar(self, x, height, width=0.8, bottom=None, *, align="center", label = kwargs.pop('label', '') tick_labels = kwargs.pop('tick_label', None) - adjust_ylim = False - adjust_xlim = False - y = bottom # Matches barh call signature. if orientation == 'vertical': - if bottom is None: - if self.get_yscale() == 'log': - adjust_ylim = True + if y is None: y = 0 - elif orientation == 'horizontal': if x is None: - if self.get_xscale() == 'log': - adjust_xlim = True x = 0 if orientation == 'vertical': @@ -2429,21 +2421,6 @@ def bar(self, x, height, width=0.8, bottom=None, *, align="center", else: errorbar = None - if adjust_xlim: - xmin, xmax = self.dataLim.intervalx - xmin = min(w for w in width if w > 0) - if xerr is not None: - xmin = xmin - np.max(xerr) - xmin = max(xmin * 0.9, 1e-100) - self.dataLim.intervalx = (xmin, xmax) - - if adjust_ylim: - ymin, ymax = self.dataLim.intervaly - ymin = min(h for h in height if h > 0) - if yerr is not None: - ymin = ymin - np.max(yerr) - ymin = max(ymin * 0.9, 1e-100) - self.dataLim.intervaly = (ymin, ymax) self._request_autoscale_view() bar_container = BarContainer(patches, errorbar, label=label) @@ -6741,30 +6718,8 @@ def hist(self, x, bins=None, range=None, density=False, weights=None, if log: if orientation == 'horizontal': self.set_xscale('log', nonposx='clip') - logbase = self.xaxis._scale.base else: # orientation == 'vertical' self.set_yscale('log', nonposy='clip') - logbase = self.yaxis._scale.base - - # Setting a minimum of 0 results in problems for log plots - if np.min(bottom) > 0: - minimum = np.min(bottom) - elif density or weights is not None: - # For data that is normed to form a probability density, - # set to minimum data value / logbase - # (gives 1 full tick-label unit for the lowest filled bin) - ndata = np.array(tops) - minimum = (np.min(ndata[ndata > 0])) / logbase - else: - # For non-normed (density = False) data, - # set the min to 1 / log base, - # again so that there is 1 full tick-label unit - # for the lowest bin - minimum = 1.0 / logbase - - y[0], y[-1] = minimum, minimum - else: - minimum = 0 if align == 'left': x -= 0.5*(bins[1]-bins[0]) @@ -6785,8 +6740,6 @@ def hist(self, x, bins=None, range=None, density=False, weights=None, # set the top of this polygon y[1:2*len(bins)-1:2], y[2:2*len(bins):2] = (m + bottom, m + bottom) - if log: - y[y < minimum] = minimum if orientation == 'horizontal': xvals.append(y.copy()) yvals.append(x.copy()) @@ -6809,9 +6762,9 @@ def hist(self, x, bins=None, range=None, density=False, weights=None, for patch_list in patches: for patch in patch_list: if orientation == 'vertical': - patch.sticky_edges.y.append(minimum) + patch.sticky_edges.y.append(0) elif orientation == 'horizontal': - patch.sticky_edges.x.append(minimum) + patch.sticky_edges.x.append(0) # we return patches, so put it back in the expected order patches.reverse() diff --git a/lib/matplotlib/tests/baseline_images/test_axes/hist_step_log_bottom.png b/lib/matplotlib/tests/baseline_images/test_axes/hist_step_log_bottom.png deleted file mode 100644 index 8f45e3c8b473ddc78ea875d51f2778fafa40e471..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7597 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 awUE24Ym&+JM>88@ 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 diff --git a/lib/matplotlib/tests/baseline_images/test_axes/hist_steplog.png b/lib/matplotlib/tests/baseline_images/test_axes/hist_steplog.png deleted file mode 100644 index ba9d2e1b22961a3c134ef7d9b2dbbd9bfcdb1c62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13185 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 PLXet@mU8|Di-7+H91MEh diff --git a/lib/matplotlib/tests/baseline_images/test_axes/hist_steplog.svg b/lib/matplotlib/tests/baseline_images/test_axes/hist_steplog.svg deleted file mode 100644 index e95ecae5ff8f..000000000000 --- a/lib/matplotlib/tests/baseline_images/test_axes/hist_steplog.svg +++ /dev/null @@ -1,3544 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index f7036342d720..281b0fefa5b4 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -1628,6 +1628,22 @@ def test_hist_log(): ax.hist(data, fill=False, log=True) +@check_figures_equal(extensions=["png"]) +def test_hist_log_2(fig_test, fig_ref): + axs_test = fig_test.subplots(2, 3) + axs_ref = fig_ref.subplots(2, 3) + for i, histtype in enumerate(["bar", "step", "stepfilled"]): + # Set log scale, then call hist(). + axs_test[0, i].set_yscale("log") + axs_test[0, i].hist(1, 1, histtype=histtype) + # Call hist(), then set log scale. + axs_test[1, i].hist(1, 1, histtype=histtype) + axs_test[1, i].set_yscale("log") + # Use hist(..., log=True). + for ax in axs_ref[:, i]: + ax.hist(1, 1, log=True, histtype=histtype) + + @image_comparison(['hist_bar_empty.png'], remove_text=True) def test_hist_bar_empty(): # From #3886: creating hist from empty dataset raises ValueError @@ -1642,23 +1658,6 @@ def test_hist_step_empty(): ax.hist([], histtype='step') -@image_comparison(['hist_steplog'], remove_text=True, tol=0.1) -def test_hist_steplog(): - np.random.seed(0) - data = np.random.standard_normal(2000) - data += -2.0 - np.min(data) - data_pos = data + 2.1 - data_big = data_pos + 30 - weights = np.ones_like(data) * 1.e-5 - - axs = plt.figure().subplots(4) - axs[0].hist(data, 100, histtype='stepfilled', log=True) - axs[1].hist(data_pos, 100, histtype='stepfilled', log=True) - axs[2].hist(data, 100, weights=weights, histtype='stepfilled', log=True) - axs[3].hist(data_big, 100, histtype='stepfilled', log=True, - orientation='horizontal') - - @image_comparison(['hist_step_filled.png'], remove_text=True) def test_hist_step_filled(): np.random.seed(0) @@ -1686,29 +1685,6 @@ def test_hist_density(): ax.hist(data, density=True) -@image_comparison(['hist_step_log_bottom.png'], remove_text=True) -def test_hist_step_log_bottom(): - # check that bottom doesn't get overwritten by the 'minimum' on a - # log scale histogram (https://github.com/matplotlib/matplotlib/pull/4608) - np.random.seed(0) - data = np.random.standard_normal(2000) - fig = plt.figure() - ax = fig.add_subplot(111) - # normal hist (should clip minimum to 1/base) - ax.hist(data, bins=10, log=True, histtype='stepfilled', - alpha=0.5, color='b') - # manual bottom < 1/base (previously buggy, see #4608) - ax.hist(data, bins=10, log=True, histtype='stepfilled', - alpha=0.5, color='g', bottom=1e-2) - # manual bottom > 1/base - ax.hist(data, bins=10, log=True, histtype='stepfilled', - alpha=0.5, color='r', bottom=0.5) - # array bottom with some less than 1/base (should clip to 1/base) - ax.hist(data, bins=10, log=True, histtype='stepfilled', - alpha=0.5, color='y', bottom=np.arange(10)) - ax.set_ylim(9e-3, 1e3) - - def test_hist_unequal_bins_density(): # Test correct behavior of normalized histogram with unequal bins # https://github.com/matplotlib/matplotlib/issues/9557