Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit d6340ab

Browse files
committed
Fix a recursion problem with masked arrays in get_converter introduced in f8344a1
If a masked array with the first element masked is passed in to get_converter, the converter = self.get_converter(xravel()[0]) call causes a RuntimeError: maximum recursion depth exceeded. This patch will pass the first unmasked value, or skip the call if all elements are masked.
1 parent 59e4ada commit d6340ab

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

lib/matplotlib/units.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,17 @@ def get_converter(self, x):
134134
converter = self.get(classx)
135135

136136
if isinstance(x, np.ndarray) and x.size:
137-
converter = self.get_converter(x.ravel()[0])
138-
return converter
137+
xravel = x.ravel()
138+
try:
139+
# pass the first value of x that is not masked back to get_converter
140+
if not np.all(xravel.mask):
141+
# some elements are not masked
142+
converter = self.get_converter(xravel[np.argmin(xravel.mask)])
143+
return converter
144+
except AttributeError:
145+
# not a masked_array
146+
converter = self.get_converter(xravel[0])
147+
return converter
139148

140149
if converter is None and iterable(x):
141150
for thisx in x:

0 commit comments

Comments
 (0)