Skip to content

Commit 7b5ff33

Browse files
authored
Merge pull request matplotlib#11917 from efiring/contour_level_kwarg_scalar
BUG: make arg 'N' and kwarg 'levels' behave the same when scalar
2 parents 92f32bb + 6c6c506 commit 7b5ff33

File tree

2 files changed

+18
-13
lines changed

2 files changed

+18
-13
lines changed

Diff for: lib/matplotlib/contour.py

+7-13
Original file line numberDiff line numberDiff line change
@@ -1225,21 +1225,15 @@ def _contour_level_args(self, z, args):
12251225
self._auto = False
12261226
if self.levels is None:
12271227
if len(args) == 0:
1228-
lev = self._autolev(7)
1228+
levels_arg = 7 # Default, hard-wired.
12291229
else:
1230-
level_arg = args[0]
1231-
try:
1232-
if isinstance(level_arg, Integral):
1233-
lev = self._autolev(level_arg)
1234-
else:
1235-
lev = np.asarray(level_arg).astype(np.float64)
1236-
except:
1237-
raise TypeError(
1238-
"Last {0} arg must give levels; see help({0})"
1239-
.format(fn))
1240-
self.levels = lev
1230+
levels_arg = args[0]
1231+
else:
1232+
levels_arg = self.levels
1233+
if isinstance(levels_arg, Integral):
1234+
self.levels = self._autolev(levels_arg)
12411235
else:
1242-
self.levels = np.asarray(self.levels).astype(np.float64)
1236+
self.levels = np.asarray(levels_arg).astype(np.float64)
12431237

12441238
if not self.filled:
12451239
inside = (self.levels > self.zmin) & (self.levels < self.zmax)

Diff for: lib/matplotlib/tests/test_contour.py

+11
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,17 @@ def test_contour_empty_levels():
130130
assert len(record) == 1
131131

132132

133+
def test_contour_Nlevels():
134+
# A scalar levels arg or kwarg should trigger auto level generation.
135+
# https://github.com/matplotlib/matplotlib/issues/11913
136+
z = np.arange(12).reshape((3, 4))
137+
fig, ax = plt.subplots()
138+
cs1 = ax.contour(z, 5)
139+
assert len(cs1.levels) > 1
140+
cs2 = ax.contour(z, levels=5)
141+
assert (cs1.levels == cs2.levels).all()
142+
143+
133144
def test_contour_badlevel_fmt():
134145
# test funny edge case from
135146
# https://github.com/matplotlib/matplotlib/issues/9742

0 commit comments

Comments
 (0)