Skip to content

Commit aaea1d4

Browse files
authored
Merge pull request #13879 from anntzer/extremes
Clarify handling of "extreme" values in FloatingAxisArtistHelper.
2 parents 983bbdd + 6533873 commit aaea1d4

File tree

1 file changed

+16
-17
lines changed

1 file changed

+16
-17
lines changed

lib/mpl_toolkits/axisartist/grid_helper_curvelinear.py

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,16 @@ def __init__(self, grid_helper, nth_coord, value, axis_direction=None):
8585
super().__init__(nth_coord, value)
8686
self.value = value
8787
self.grid_helper = grid_helper
88-
self._extremes = None, None
88+
self._extremes = -np.inf, np.inf
8989

9090
self._get_line_path = None # a method that returns a Path.
9191
self._line_num_points = 100 # number of points to create a line
9292

9393
def set_extremes(self, e1, e2):
94+
if e1 is None:
95+
e1 = -np.inf
96+
if e2 is None:
97+
e2 = np.inf
9498
self._extremes = e1, e2
9599

96100
def update_lim(self, axes):
@@ -102,36 +106,31 @@ def update_lim(self, axes):
102106
extremes = grid_finder.extreme_finder(grid_finder.inv_transform_xy,
103107
x1, y1, x2, y2)
104108

105-
extremes = list(extremes)
106-
e1, e2 = self._extremes # ranges of other coordinates
109+
lon_min, lon_max, lat_min, lat_max = extremes
110+
e_min, e_max = self._extremes # ranges of other coordinates
107111
if self.nth_coord == 0:
108-
if e1 is not None:
109-
extremes[2] = max(e1, extremes[2])
110-
if e2 is not None:
111-
extremes[3] = min(e2, extremes[3])
112+
lat_min = max(e_min, lat_min)
113+
lat_max = min(e_max, lat_max)
112114
elif self.nth_coord == 1:
113-
if e1 is not None:
114-
extremes[0] = max(e1, extremes[0])
115-
if e2 is not None:
116-
extremes[1] = min(e2, extremes[1])
115+
lon_min = max(e_min, lon_min)
116+
lon_max = min(e_max, lon_max)
117117

118-
lon_min, lon_max, lat_min, lat_max = extremes
119118
lon_levs, lon_n, lon_factor = \
120119
grid_finder.grid_locator1(lon_min, lon_max)
121120
lat_levs, lat_n, lat_factor = \
122121
grid_finder.grid_locator2(lat_min, lat_max)
123122

124123
if self.nth_coord == 0:
125-
xx0 = np.linspace(self.value, self.value, self._line_num_points)
126-
yy0 = np.linspace(extremes[2], extremes[3], self._line_num_points)
124+
xx0 = np.full(self._line_num_points, self.value)
125+
yy0 = np.linspace(lat_min, lat_max, self._line_num_points)
127126
xx, yy = grid_finder.transform_xy(xx0, yy0)
128127
elif self.nth_coord == 1:
129-
xx0 = np.linspace(extremes[0], extremes[1], self._line_num_points)
130-
yy0 = np.linspace(self.value, self.value, self._line_num_points)
128+
xx0 = np.linspace(lon_min, lon_max, self._line_num_points)
129+
yy0 = np.full(self._line_num_points, self.value)
131130
xx, yy = grid_finder.transform_xy(xx0, yy0)
132131

133132
self.grid_info = {
134-
"extremes": extremes,
133+
"extremes": (lon_min, lon_max, lat_min, lat_max),
135134
"lon_info": (lon_levs, lon_n, _deprecate_factor_none(lon_factor)),
136135
"lat_info": (lat_levs, lat_n, _deprecate_factor_none(lat_factor)),
137136
"lon_labels": grid_finder.tick_formatter1(

0 commit comments

Comments
 (0)