From 6aedb07c9f621837f5519d01aca26629fa9401e1 Mon Sep 17 00:00:00 2001 From: Vedant Nanda Date: Thu, 13 Apr 2017 18:53:51 +0530 Subject: [PATCH 1/5] check placed on converted_limit --- lib/mpl_toolkits/mplot3d/axes3d.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/mpl_toolkits/mplot3d/axes3d.py b/lib/mpl_toolkits/mplot3d/axes3d.py index 1f6637d206ad..9d2554a99ce9 100644 --- a/lib/mpl_toolkits/mplot3d/axes3d.py +++ b/lib/mpl_toolkits/mplot3d/axes3d.py @@ -593,11 +593,11 @@ def _validate_axis_limits(self, limit, convert): """ if limit is not None: - converted_limits = convert(limit) - if (isinstance(limit, float) and - (not np.isreal(limit) or not np.isfinite(limit))): + converted_limit = convert(limit) + if (isinstance(converted_limit, float) and + (not np.isreal(converted_limit) or not np.isfinite(converted_limit))): raise ValueError("Axis limits cannot be NaN or Inf") - return converted_limits + return converted_limit def set_xlim3d(self, left=None, right=None, emit=True, auto=False, **kw): """ From 52c6725743cef31002962e8bfb189ca8c116fac1 Mon Sep 17 00:00:00 2001 From: Vedant Nanda Date: Fri, 14 Apr 2017 10:12:25 +0530 Subject: [PATCH 2/5] moved _validate_axis_limits in base class --- lib/matplotlib/axes/_base.py | 35 +++++++++++++++--------------- lib/mpl_toolkits/mplot3d/axes3d.py | 22 +++++++++---------- 2 files changed, 28 insertions(+), 29 deletions(-) diff --git a/lib/matplotlib/axes/_base.py b/lib/matplotlib/axes/_base.py index b10d06120632..5a5a5ff3cd40 100644 --- a/lib/matplotlib/axes/_base.py +++ b/lib/matplotlib/axes/_base.py @@ -2810,6 +2810,19 @@ def get_xlim(self): """ return tuple(self.viewLim.intervalx) + def _validate_axis_limits(self, limit, convert): + """ + Raise ValueError if specified axis limits are infinite. + + """ + if limit is not None: + converted_limit = convert(limit) + if (isinstance(converted_limit, float) and + (not np.isreal(converted_limit) or + not np.isfinite(converted_limit))): + raise ValueError("Axis limits cannot be NaN or Inf") + return converted_limit + def set_xlim(self, left=None, right=None, emit=True, auto=False, **kw): """ Set the data limits for the x-axis @@ -2876,15 +2889,8 @@ def set_xlim(self, left=None, right=None, emit=True, auto=False, **kw): left, right = left self._process_unit_info(xdata=(left, right)) - if left is not None: - left = self.convert_xunits(left) - if right is not None: - right = self.convert_xunits(right) - - if ((left is not None and not np.isfinite(left)) or - (right is not None and not np.isfinite(right))): - raise ValueError("Specified x limits must be finite; " - "instead, found: (%s, %s)" % (left, right)) + left = self._validate_axis_limits(left, self.convert_xunits) + right = self._validate_axis_limits(right, self.convert_xunits) old_left, old_right = self.get_xlim() if left is None: @@ -3175,15 +3181,8 @@ def set_ylim(self, bottom=None, top=None, emit=True, auto=False, **kw): if top is None and iterable(bottom): bottom, top = bottom - if bottom is not None: - bottom = self.convert_yunits(bottom) - if top is not None: - top = self.convert_yunits(top) - - if ((top is not None and not np.isfinite(top)) or - (bottom is not None and not np.isfinite(bottom))): - raise ValueError("Specified y limits must be finite; " - "instead, found: (%s, %s)" % (bottom, top)) + bottom = self._validate_axis_limits(bottom, self.convert_yunits) + top = self._validate_axis_limits(top, self.convert_yunits) old_bottom, old_top = self.get_ylim() diff --git a/lib/mpl_toolkits/mplot3d/axes3d.py b/lib/mpl_toolkits/mplot3d/axes3d.py index 9d2554a99ce9..2a7d41965047 100644 --- a/lib/mpl_toolkits/mplot3d/axes3d.py +++ b/lib/mpl_toolkits/mplot3d/axes3d.py @@ -587,17 +587,17 @@ def _determine_lims(self, xmin=None, xmax=None, *args, **kwargs): xmax += 0.05 return (xmin, xmax) - def _validate_axis_limits(self, limit, convert): - """ - Raise ValueError if specified axis limits are infinite. - - """ - if limit is not None: - converted_limit = convert(limit) - if (isinstance(converted_limit, float) and - (not np.isreal(converted_limit) or not np.isfinite(converted_limit))): - raise ValueError("Axis limits cannot be NaN or Inf") - return converted_limit + # def _validate_axis_limits(self, limit, convert): + # """ + # Raise ValueError if specified axis limits are infinite. + + # """ + # if limit is not None: + # converted_limit = convert(limit) + # if (isinstance(converted_limit, float) and + # (not np.isreal(converted_limit) or not np.isfinite(converted_limit))): + # raise ValueError("Axis limits cannot be NaN or Inf") + # return converted_limit def set_xlim3d(self, left=None, right=None, emit=True, auto=False, **kw): """ From c6e151fa8385032e5692051cabbc6a7799d813f4 Mon Sep 17 00:00:00 2001 From: Vedant Nanda Date: Fri, 14 Apr 2017 18:09:44 +0530 Subject: [PATCH 3/5] removed commented code --- lib/mpl_toolkits/mplot3d/axes3d.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/lib/mpl_toolkits/mplot3d/axes3d.py b/lib/mpl_toolkits/mplot3d/axes3d.py index 2a7d41965047..10cc339c2efe 100644 --- a/lib/mpl_toolkits/mplot3d/axes3d.py +++ b/lib/mpl_toolkits/mplot3d/axes3d.py @@ -587,18 +587,6 @@ def _determine_lims(self, xmin=None, xmax=None, *args, **kwargs): xmax += 0.05 return (xmin, xmax) - # def _validate_axis_limits(self, limit, convert): - # """ - # Raise ValueError if specified axis limits are infinite. - - # """ - # if limit is not None: - # converted_limit = convert(limit) - # if (isinstance(converted_limit, float) and - # (not np.isreal(converted_limit) or not np.isfinite(converted_limit))): - # raise ValueError("Axis limits cannot be NaN or Inf") - # return converted_limit - def set_xlim3d(self, left=None, right=None, emit=True, auto=False, **kw): """ Set 3D x limits. From f374d0840ae5ba388abbf24b8a49b7682538d607 Mon Sep 17 00:00:00 2001 From: Vedant Nanda Date: Fri, 14 Apr 2017 20:41:38 +0530 Subject: [PATCH 4/5] changed function name and docstring, fixed set_ylim3d() --- lib/matplotlib/axes/_base.py | 18 ++++++++++++------ lib/mpl_toolkits/mplot3d/axes3d.py | 20 ++++++++++---------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/lib/matplotlib/axes/_base.py b/lib/matplotlib/axes/_base.py index 5a5a5ff3cd40..5b7c245d38f9 100644 --- a/lib/matplotlib/axes/_base.py +++ b/lib/matplotlib/axes/_base.py @@ -2810,9 +2810,15 @@ def get_xlim(self): """ return tuple(self.viewLim.intervalx) - def _validate_axis_limits(self, limit, convert): + def _validate_converted_limits(self, limit, convert): """ - Raise ValueError if specified axis limits are infinite. + Raise ValueError if converted limits are non-finite. + + Note that this functions also accepts None as a limit argument. + + Returns + ------- + The limit value after call to convert(), or None if limit is None. """ if limit is not None: @@ -2889,8 +2895,8 @@ def set_xlim(self, left=None, right=None, emit=True, auto=False, **kw): left, right = left self._process_unit_info(xdata=(left, right)) - left = self._validate_axis_limits(left, self.convert_xunits) - right = self._validate_axis_limits(right, self.convert_xunits) + left = self._validate_converted_limits(left, self.convert_xunits) + right = self._validate_converted_limits(right, self.convert_xunits) old_left, old_right = self.get_xlim() if left is None: @@ -3181,8 +3187,8 @@ def set_ylim(self, bottom=None, top=None, emit=True, auto=False, **kw): if top is None and iterable(bottom): bottom, top = bottom - bottom = self._validate_axis_limits(bottom, self.convert_yunits) - top = self._validate_axis_limits(top, self.convert_yunits) + bottom = self._validate_converted_limits(bottom, self.convert_yunits) + top = self._validate_converted_limits(top, self.convert_yunits) old_bottom, old_top = self.get_ylim() diff --git a/lib/mpl_toolkits/mplot3d/axes3d.py b/lib/mpl_toolkits/mplot3d/axes3d.py index 10cc339c2efe..8f1f213af82a 100644 --- a/lib/mpl_toolkits/mplot3d/axes3d.py +++ b/lib/mpl_toolkits/mplot3d/axes3d.py @@ -605,8 +605,8 @@ def set_xlim3d(self, left=None, right=None, emit=True, auto=False, **kw): left, right = left self._process_unit_info(xdata=(left, right)) - left = self._validate_axis_limits(left, self.convert_xunits) - right = self._validate_axis_limits(right, self.convert_xunits) + left = self._validate_converted_limits(left, self.convert_xunits) + right = self._validate_converted_limits(right, self.convert_xunits) old_left, old_right = self.get_xlim() if left is None: @@ -657,14 +657,14 @@ def set_ylim3d(self, bottom=None, top=None, emit=True, auto=False, **kw): bottom, top = bottom self._process_unit_info(ydata=(bottom, top)) - if bottom is not None: - bottom = self.convert_yunits(bottom) - if top is not None: - top = self.convert_yunits(top) + bottom = self._validate_converted_limits(bottom, self.convert_yunits) + top = self._validate_converted_limits(top, self.convert_yunits) old_bottom, old_top = self.get_ylim() - bottom = self._validate_axis_limits(bottom, self.convert_yunits) - top = self._validate_axis_limits(top, self.convert_yunits) + if bottom is None: + bottom = old_bottom + if top is None: + top = old_top if top == bottom: warnings.warn(('Attempting to set identical bottom==top results\n' @@ -709,8 +709,8 @@ def set_zlim3d(self, bottom=None, top=None, emit=True, auto=False, **kw): bottom, top = bottom self._process_unit_info(zdata=(bottom, top)) - bottom = self._validate_axis_limits(bottom, self.convert_yunits) - top = self._validate_axis_limits(top, self.convert_yunits) + bottom = self._validate_converted_limits(bottom, self.convert_yunits) + top = self._validate_converted_limits(top, self.convert_yunits) old_bottom, old_top = self.get_zlim() if bottom is None: From 1667fb5570d4b7ba3d8e32fe5c05719b7482f1ac Mon Sep 17 00:00:00 2001 From: Vedant Nanda Date: Fri, 14 Apr 2017 21:02:41 +0530 Subject: [PATCH 5/5] fixed typos --- lib/matplotlib/axes/_base.py | 2 +- lib/mpl_toolkits/mplot3d/axes3d.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/matplotlib/axes/_base.py b/lib/matplotlib/axes/_base.py index 5b7c245d38f9..bf44d1176cc7 100644 --- a/lib/matplotlib/axes/_base.py +++ b/lib/matplotlib/axes/_base.py @@ -2814,7 +2814,7 @@ def _validate_converted_limits(self, limit, convert): """ Raise ValueError if converted limits are non-finite. - Note that this functions also accepts None as a limit argument. + Note that this function also accepts None as a limit argument. Returns ------- diff --git a/lib/mpl_toolkits/mplot3d/axes3d.py b/lib/mpl_toolkits/mplot3d/axes3d.py index 8f1f213af82a..2b44de576dc0 100644 --- a/lib/mpl_toolkits/mplot3d/axes3d.py +++ b/lib/mpl_toolkits/mplot3d/axes3d.py @@ -709,8 +709,8 @@ def set_zlim3d(self, bottom=None, top=None, emit=True, auto=False, **kw): bottom, top = bottom self._process_unit_info(zdata=(bottom, top)) - bottom = self._validate_converted_limits(bottom, self.convert_yunits) - top = self._validate_converted_limits(top, self.convert_yunits) + bottom = self._validate_converted_limits(bottom, self.convert_zunits) + top = self._validate_converted_limits(top, self.convert_zunits) old_bottom, old_top = self.get_zlim() if bottom is None: