From 72b06a37dddc84db6733be573c8722e85bb7e997 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 6 Dec 2017 10:59:48 +0000 Subject: [PATCH 1/2] Only label vertical lines in acorr --- lib/matplotlib/axes/_axes.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index 5d05169728aa..444e8a754635 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -1689,7 +1689,6 @@ def xcorr(self, x, y, normed=True, detrend=mlab.detrend_none, Parameters ---------- - x : sequence of scalars of length n y : sequence of scalars of length n @@ -1743,10 +1742,10 @@ def xcorr(self, x, y, normed=True, detrend=mlab.detrend_none, x = detrend(np.asarray(x)) y = detrend(np.asarray(y)) - c = np.correlate(x, y, mode=2) + correls = np.correlate(x, y, mode=2) if normed: - c /= np.sqrt(np.dot(x, x) * np.dot(y, y)) + correls /= np.sqrt(np.dot(x, x) * np.dot(y, y)) if maxlags is None: maxlags = Nx - 1 @@ -1756,18 +1755,19 @@ def xcorr(self, x, y, normed=True, detrend=mlab.detrend_none, 'positive < %d' % Nx) lags = np.arange(-maxlags, maxlags + 1) - c = c[Nx - 1 - maxlags:Nx + maxlags] + correls = correls[Nx - 1 - maxlags:Nx + maxlags] if usevlines: - a = self.vlines(lags, [0], c, **kwargs) + a = self.vlines(lags, [0], correls, **kwargs) + # Make label empty so only vertical lines get a legend entry + kwargs['label'] = '' b = self.axhline(**kwargs) else: - kwargs.setdefault('marker', 'o') kwargs.setdefault('linestyle', 'None') - a, = self.plot(lags, c, **kwargs) + a, = self.plot(lags, correls, **kwargs) b = None - return lags, c, a, b + return lags, correls, a, b #### Specialized plotting From cc3a708398a05af96d88dac87d4035d3b848add2 Mon Sep 17 00:00:00 2001 From: David Stansby Date: Wed, 6 Dec 2017 19:01:09 +0000 Subject: [PATCH 2/2] Add legend to acorr image test --- lib/matplotlib/axes/_axes.py | 2 +- .../tests/baseline_images/test_axes/acorr.png | Bin 13046 -> 14091 bytes lib/matplotlib/tests/test_axes.py | 3 ++- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/matplotlib/axes/_axes.py b/lib/matplotlib/axes/_axes.py index 444e8a754635..85dcc041d089 100644 --- a/lib/matplotlib/axes/_axes.py +++ b/lib/matplotlib/axes/_axes.py @@ -1760,7 +1760,7 @@ def xcorr(self, x, y, normed=True, detrend=mlab.detrend_none, if usevlines: a = self.vlines(lags, [0], correls, **kwargs) # Make label empty so only vertical lines get a legend entry - kwargs['label'] = '' + kwargs.pop('label', '') b = self.axhline(**kwargs) else: kwargs.setdefault('marker', 'o') diff --git a/lib/matplotlib/tests/baseline_images/test_axes/acorr.png b/lib/matplotlib/tests/baseline_images/test_axes/acorr.png index 970a181d8c0354f4b576109c230ddfaf051d16ac..62ccbab1bc7b0c3b80864c2a0ac73c5088076815 100644 GIT binary patch literal 14091 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 literal 13046 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 R7l