From 97a7d50c26472541561beea2bff40f945efff038 Mon Sep 17 00:00:00 2001 From: Roger Date: Fri, 7 Dec 2018 10:01:41 -0500 Subject: [PATCH 1/5] Add simple delta cursor to toolbar for zoom mode --- lib/matplotlib/backend_bases.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lib/matplotlib/backend_bases.py b/lib/matplotlib/backend_bases.py index aa07b81687ff..9d4b1a1ee277 100644 --- a/lib/matplotlib/backend_bases.py +++ b/lib/matplotlib/backend_bases.py @@ -2656,6 +2656,17 @@ def mouse_move(self, event): data_str = a.format_cursor_data(data) if data_str is not None: s = s + ' ' + data_str + + if self.mode == 'zoom rect' and self._xypress: + lastx, lasty, a, ind, view = self._xypress[0] + + trans = event.inaxes.transData.inverted() + last_xdata, last_ydata = trans.transform_point((lastx, lasty)) + + dx = event.xdata - last_xdata + dy = event.ydata - last_ydata + + s += ' (Δx={}\tΔy={})'.format(event.inaxes.format_xdata(dx), event.inaxes.format_ydata(dy)) if len(self.mode): self.set_message('%s, %s' % (self.mode, s)) From 083fbafda5ff2baeb12fa25b8995efbc3ca7eb44 Mon Sep 17 00:00:00 2001 From: Roger Date: Fri, 7 Dec 2018 10:06:11 -0500 Subject: [PATCH 2/5] style fixes --- lib/matplotlib/backend_bases.py | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/lib/matplotlib/backend_bases.py b/lib/matplotlib/backend_bases.py index 9d4b1a1ee277..8d193ad7c081 100644 --- a/lib/matplotlib/backend_bases.py +++ b/lib/matplotlib/backend_bases.py @@ -2656,17 +2656,14 @@ def mouse_move(self, event): data_str = a.format_cursor_data(data) if data_str is not None: s = s + ' ' + data_str - + if self.mode == 'zoom rect' and self._xypress: lastx, lasty, a, ind, view = self._xypress[0] - trans = event.inaxes.transData.inverted() last_xdata, last_ydata = trans.transform_point((lastx, lasty)) - - dx = event.xdata - last_xdata - dy = event.ydata - last_ydata - - s += ' (Δx={}\tΔy={})'.format(event.inaxes.format_xdata(dx), event.inaxes.format_ydata(dy)) + dx = event.inaxes.format_xdata(event.xdata - last_xdata) + dy = event.inaxes.format_ydata(event.ydata - last_ydata) + s += ' (Δx={}\tΔy={})'.format(dx, dy) if len(self.mode): self.set_message('%s, %s' % (self.mode, s)) From b989936da6ee4e9346bd2fdd2fb99066fcc0fdf5 Mon Sep 17 00:00:00 2001 From: Roger Date: Fri, 7 Dec 2018 13:21:41 -0500 Subject: [PATCH 3/5] remove non-ASCII character and change display format --- lib/matplotlib/backend_bases.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/lib/matplotlib/backend_bases.py b/lib/matplotlib/backend_bases.py index 8d193ad7c081..c83b3a476685 100644 --- a/lib/matplotlib/backend_bases.py +++ b/lib/matplotlib/backend_bases.py @@ -2661,9 +2661,8 @@ def mouse_move(self, event): lastx, lasty, a, ind, view = self._xypress[0] trans = event.inaxes.transData.inverted() last_xdata, last_ydata = trans.transform_point((lastx, lasty)) - dx = event.inaxes.format_xdata(event.xdata - last_xdata) - dy = event.inaxes.format_ydata(event.ydata - last_ydata) - s += ' (Δx={}\tΔy={})'.format(dx, dy) + dxy = event.inaxes.format_coord(event.xdata - last_xdata, event.ydata - last_ydata) + s += ' (\N{GREEK CAPITAL LETTER DELTA}: {})'.format(dd) if len(self.mode): self.set_message('%s, %s' % (self.mode, s)) From 4cb0d841d74dbcdec3e60c20b2aad7d8d1659e13 Mon Sep 17 00:00:00 2001 From: Roger Date: Fri, 7 Dec 2018 14:06:29 -0500 Subject: [PATCH 4/5] Fix typo --- lib/matplotlib/backend_bases.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/matplotlib/backend_bases.py b/lib/matplotlib/backend_bases.py index c83b3a476685..965fdc44805d 100644 --- a/lib/matplotlib/backend_bases.py +++ b/lib/matplotlib/backend_bases.py @@ -2662,7 +2662,7 @@ def mouse_move(self, event): trans = event.inaxes.transData.inverted() last_xdata, last_ydata = trans.transform_point((lastx, lasty)) dxy = event.inaxes.format_coord(event.xdata - last_xdata, event.ydata - last_ydata) - s += ' (\N{GREEK CAPITAL LETTER DELTA}: {})'.format(dd) + s += ' (\N{GREEK CAPITAL LETTER DELTA}: {})'.format(dxy) if len(self.mode): self.set_message('%s, %s' % (self.mode, s)) From 1f0308323aef5dd9e17d2616ed7e605193e05158 Mon Sep 17 00:00:00 2001 From: Roger Date: Mon, 10 Dec 2018 07:30:54 -0500 Subject: [PATCH 5/5] revert display format and limit to cases without units --- lib/matplotlib/backend_bases.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/matplotlib/backend_bases.py b/lib/matplotlib/backend_bases.py index 965fdc44805d..6dafb8d6cfc2 100644 --- a/lib/matplotlib/backend_bases.py +++ b/lib/matplotlib/backend_bases.py @@ -2657,12 +2657,13 @@ def mouse_move(self, event): if data_str is not None: s = s + ' ' + data_str - if self.mode == 'zoom rect' and self._xypress: + if self.mode == 'zoom rect' and self._xypress and not event.inaxes.have_units(): lastx, lasty, a, ind, view = self._xypress[0] trans = event.inaxes.transData.inverted() last_xdata, last_ydata = trans.transform_point((lastx, lasty)) - dxy = event.inaxes.format_coord(event.xdata - last_xdata, event.ydata - last_ydata) - s += ' (\N{GREEK CAPITAL LETTER DELTA}: {})'.format(dxy) + dx = event.inaxes.format_xdata(event.xdata - last_xdata) + dy = event.inaxes.format_ydata(event.ydata - last_ydata) + s += ' (\N{GREEK CAPITAL LETTER DELTA}x={}\t\N{GREEK CAPITAL LETTER DELTA}y={})'.format(dx, dy) if len(self.mode): self.set_message('%s, %s' % (self.mode, s))