From 6917f4fab3916e30bf83adcd2925c907d44747c0 Mon Sep 17 00:00:00 2001 From: Nic Eggert Date: Sun, 17 Mar 2013 15:52:50 -0400 Subject: [PATCH 1/4] Histograms with stacked=True, normed=True now normalize sum of histograms rather than each histogram individually. --- lib/matplotlib/axes.py | 10 ++++++++-- lib/matplotlib/tests/test_axes.py | 9 +++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/axes.py b/lib/matplotlib/axes.py index 850146384085..4ab860a3c1af 100644 --- a/lib/matplotlib/axes.py +++ b/lib/matplotlib/axes.py @@ -8088,7 +8088,8 @@ def hist(self, x, bins=10, range=None, normed=False, weights=None, If `True`, the first element of the return tuple will be the counts normalized to form a probability density, i.e., ``n/(len(x)`dbin)``, ie the integral of the histogram will sum to - 1. + 1. If *stacked* is also *True*, the sum of the histograms is + normalized to 1. weights : array_like, shape (n, ), optional, default: None An array of weights, of the same shape as `x`. Each value in `x` @@ -8300,9 +8301,10 @@ def hist(self, x, bins=10, range=None, normed=False, weights=None, # this will automatically overwrite bins, # so that each histogram uses the same bins m, bins = np.histogram(x[i], bins, weights=w[i], **hist_kwargs) + m = m.astype(float) # causes problems later if it's an int if mlast is None: mlast = np.zeros(len(bins)-1, m.dtype) - if normed: + if normed and not stacked: db = np.diff(bins) m = (m.astype(float) / db) / m.sum() if stacked: @@ -8310,6 +8312,10 @@ def hist(self, x, bins=10, range=None, normed=False, weights=None, mlast[:] = m n.append(m) + if stacked and normed: + db = np.diff(bins) + for m in n: + m[:] = (m.astype(float) / db) / n[-1].sum() if cumulative: slc = slice(None) if cbook.is_numlike(cumulative) and cumulative < 0: diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index 9f8e547eb4eb..6bd02f1fcd32 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -1072,6 +1072,15 @@ def test_hist_stacked_step(): ax = fig.add_subplot(111) ax.hist( (d1, d2), histtype="step", stacked=True) +@image_comparison(baseline_images=['hist_stacked_normed']) +def test_hist_stacked_normed(): + # make some data + d1 = np.linspace(1, 3, 20) + d2 = np.linspace(0, 10, 50) + fig = plt.figure() + ax = fig.add_subplot(111) + ax.hist( (d1, d2), stacked=True, normed=True) + @image_comparison(baseline_images=['hist_stacked_bar']) def test_hist_stacked_bar(): # make some data From 4db3df8f54ae82a6c1ff97ad4c8a09f5f94b0424 Mon Sep 17 00:00:00 2001 From: Nic Eggert Date: Sun, 17 Mar 2013 16:04:28 -0400 Subject: [PATCH 2/4] Add test images --- .../test_axes/hist_stacked_normed.pdf | Bin 0 -> 6176 bytes .../test_axes/hist_stacked_normed.png | Bin 0 -> 13194 bytes .../test_axes/hist_stacked_normed.svg | 684 ++++++++++++++++++ 3 files changed, 684 insertions(+) create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_normed.pdf create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_normed.png create mode 100644 lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_normed.svg diff --git a/lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_normed.pdf b/lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_normed.pdf new file mode 100644 index 0000000000000000000000000000000000000000..b5a3595dfa063da2b3bbaa99207279cf187dcec3 GIT binary patch literal 6176 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 CF+nN- literal 0 HcmV?d00001 diff --git a/lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_normed.png b/lib/matplotlib/tests/baseline_images/test_axes/hist_stacked_normed.png new file mode 100644 index 0000000000000000000000000000000000000000..245321815507eef201511cb529d97d1452dbd633 GIT binary patch literal 13194 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 >s2fQ}$^(qn<*8bD!f z0{4AHD=3$S+k4UgfKloEQ%I8Qq2-e8@7>@0&;LD;Md?vvK_>mm8Td;y7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From f6efb57b27f16d65a015e588157725196ee273d5 Mon Sep 17 00:00:00 2001 From: Nic Eggert Date: Mon, 18 Mar 2013 11:40:40 -0400 Subject: [PATCH 3/4] Described stacked normed hist changes in CHANGELOG --- CHANGELOG | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 8f810db398ea..221ea4995147 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ +2013-05-08 Changed behavior of hist when given stacked=True and normed=True. + Histograms are now stacked first, then the sum is normalized. + Previously, each histogram was normalized, then they were stacked. + 2013-04-25 Changed all instances of: from matplotlib import MatplotlibDeprecationWarning as mplDeprecation @@ -13,7 +17,7 @@ margins on auto-scaleing. - TAC 2013-03-19 Added support for passing `linestyle` kwarg to `step` so all `plot` - kwargs are passed to the underlying `plot` call. -TAC + kwargs are passed to the underlying `plot` call. -TAC 2013-02-25 Added classes CubicTriInterpolator, UniformTriRefiner, TriAnalyzer to matplotlib.tri module. - GBy From 4791c9a7cd7929193140bf89fb21aa7ac29b5594 Mon Sep 17 00:00:00 2001 From: Nic Eggert Date: Sat, 6 Apr 2013 15:22:04 -0500 Subject: [PATCH 4/4] PEP8 fixes --- lib/matplotlib/tests/test_axes.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/matplotlib/tests/test_axes.py b/lib/matplotlib/tests/test_axes.py index 6bd02f1fcd32..29af0a604409 100644 --- a/lib/matplotlib/tests/test_axes.py +++ b/lib/matplotlib/tests/test_axes.py @@ -1072,6 +1072,7 @@ def test_hist_stacked_step(): ax = fig.add_subplot(111) ax.hist( (d1, d2), histtype="step", stacked=True) + @image_comparison(baseline_images=['hist_stacked_normed']) def test_hist_stacked_normed(): # make some data @@ -1079,7 +1080,8 @@ def test_hist_stacked_normed(): d2 = np.linspace(0, 10, 50) fig = plt.figure() ax = fig.add_subplot(111) - ax.hist( (d1, d2), stacked=True, normed=True) + ax.hist((d1, d2), stacked=True, normed=True) + @image_comparison(baseline_images=['hist_stacked_bar']) def test_hist_stacked_bar():