Skip to content

Commit 19b0731

Browse files
committed
axisbelow should just set zorder.
1 parent 74b6913 commit 19b0731

File tree

3 files changed

+32
-59
lines changed

3 files changed

+32
-59
lines changed

lib/matplotlib/axes/_base.py

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -486,7 +486,6 @@ def __init__(self, fig, rect,
486486
if self._position.width < 0 or self._position.height < 0:
487487
raise ValueError('Width and height specified must be non-negative')
488488
self._originalPosition = self._position.frozen()
489-
# self.set_axes(self)
490489
self.axes = self
491490
self._aspect = 'auto'
492491
self._adjustable = 'box'
@@ -510,7 +509,7 @@ def __init__(self, fig, rect,
510509
facecolor = rcParams['axes.facecolor']
511510
self._facecolor = facecolor
512511
self._frameon = frameon
513-
self._axisbelow = rcParams['axes.axisbelow']
512+
self.set_axisbelow(rcParams['axes.axisbelow'])
514513

515514
self._rasterization_zorder = None
516515

@@ -2555,18 +2554,7 @@ def draw(self, renderer=None, inframe=False):
25552554
for spine in six.itervalues(self.spines):
25562555
artists.remove(spine)
25572556

2558-
if self.axison and not inframe:
2559-
if self._axisbelow is True:
2560-
self.xaxis.set_zorder(0.5)
2561-
self.yaxis.set_zorder(0.5)
2562-
elif self._axisbelow is False:
2563-
self.xaxis.set_zorder(2.5)
2564-
self.yaxis.set_zorder(2.5)
2565-
else:
2566-
# 'line': above patches, below lines
2567-
self.xaxis.set_zorder(1.5)
2568-
self.yaxis.set_zorder(1.5)
2569-
else:
2557+
if not self.axison or inframe:
25702558
for _axis in self._get_axis_list():
25712559
artists.remove(_axis)
25722560

@@ -2637,9 +2625,7 @@ def get_renderer_cache(self):
26372625
# Axes rectangle characteristics
26382626

26392627
def get_frame_on(self):
2640-
"""
2641-
Get whether the axes rectangle patch is drawn.
2642-
"""
2628+
"""Get whether the axes rectangle patch is drawn."""
26432629
return self._frameon
26442630

26452631
def set_frame_on(self, b):
@@ -2651,6 +2637,8 @@ def set_frame_on(self, b):
26512637
Parameters
26522638
----------
26532639
b : bool
2640+
..
2641+
ACCEPTS: bool
26542642
"""
26552643
self._frameon = b
26562644
self.stale = True
@@ -2662,16 +2650,28 @@ def get_axisbelow(self):
26622650
return self._axisbelow
26632651

26642652
def set_axisbelow(self, b):
2665-
"""
2666-
Set whether axis ticks and gridlines are above or below most artists.
2653+
"""Set the zorder for the axes ticks and gridlines.
2654+
2655+
``True`` corresponds to a zorder of 0.5, ``False`` to a zorder of 2.5,
2656+
and ``"line"`` to a zorder of 1.5.
26672657
26682658
.. ACCEPTS: [ bool | 'line' ]
26692659
26702660
Parameters
26712661
----------
26722662
b : bool or 'line'
26732663
"""
2674-
self._axisbelow = validate_axisbelow(b)
2664+
self._axisbelow = axisbelow = validate_axisbelow(b)
2665+
if axisbelow is True:
2666+
zorder = 0.5
2667+
elif axisbelow is False:
2668+
zorder = 2.5
2669+
elif axisbelow == "line":
2670+
zorder = 1.5
2671+
else:
2672+
raise ValueError("Unexpected axisbelow value")
2673+
for axis in self._get_axis_list():
2674+
axis.set_zorder(zorder)
26752675
self.stale = True
26762676

26772677
@docstring.dedent_interpd
@@ -2699,6 +2699,8 @@ def grid(self, b=None, which='major', axis='both', **kwargs):
26992699
27002700
%(Line2D)s
27012701
2702+
Note that the grid will be drawn according to the axes' zorder and not
2703+
its own.
27022704
"""
27032705
if len(kwargs):
27042706
b = True

lib/matplotlib/tests/test_image.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -783,7 +783,6 @@ def test_imshow_masked_interpolation():
783783
N = 20
784784
n = colors.Normalize(vmin=0, vmax=N*N-1)
785785

786-
# data = np.random.random((N, N))*N*N
787786
data = np.arange(N*N, dtype='float').reshape(N, N)
788787

789788
data[5, 5] = -1

lib/mpl_toolkits/mplot3d/axes3d.py

Lines changed: 10 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -271,28 +271,28 @@ def draw(self, renderer):
271271
renderer.eye = self.eye
272272
renderer.get_axis_position = self.get_axis_position
273273

274-
# Calculate projection of collections and zorder them
274+
# Calculate projection of collections and patches and zorder them.
275+
# Make sure they are drawn above the grids.
276+
zorder_offset = max(axis.get_zorder()
277+
for axis in self._get_axis_list()) + 1
275278
for i, col in enumerate(
276279
sorted(self.collections,
277280
key=lambda col: col.do_3d_projection(renderer),
278281
reverse=True)):
279-
col.zorder = i
280-
281-
# Calculate projection of patches and zorder them
282+
col.zorder = zorder_offset + i
282283
for i, patch in enumerate(
283284
sorted(self.patches,
284285
key=lambda patch: patch.do_3d_projection(renderer),
285286
reverse=True)):
286-
patch.zorder = i
287+
patch.zorder = zorder_offset + i
287288

288289
if self._axis3don:
289-
axes = (self.xaxis, self.yaxis, self.zaxis)
290290
# Draw panes first
291-
for ax in axes:
292-
ax.draw_pane(renderer)
291+
for axis in self._get_axis_list():
292+
axis.draw_pane(renderer)
293293
# Then axes
294-
for ax in axes:
295-
ax.draw(renderer)
294+
for axis in self._get_axis_list():
295+
axis.draw(renderer)
296296

297297
# Then rest
298298
super().draw(renderer)
@@ -1277,34 +1277,6 @@ def set_frame_on(self, b):
12771277
self._frameon = bool(b)
12781278
self.stale = True
12791279

1280-
def get_axisbelow(self):
1281-
"""
1282-
Get whether axis below is true or not.
1283-
1284-
For axes3d objects, this will always be *True*
1285-
1286-
.. versionadded :: 1.1.0
1287-
This function was added for completeness.
1288-
"""
1289-
return True
1290-
1291-
def set_axisbelow(self, b):
1292-
"""
1293-
Set whether axis ticks and gridlines are above or below most artists.
1294-
1295-
For axes3d objects, this will ignore any settings and just use *True*
1296-
1297-
.. versionadded :: 1.1.0
1298-
This function was added for completeness.
1299-
1300-
Parameters
1301-
----------
1302-
b : bool
1303-
.. ACCEPTS: bool
1304-
"""
1305-
self._axisbelow = True
1306-
self.stale = True
1307-
13081280
def grid(self, b=True, **kwargs):
13091281
'''
13101282
Set / unset 3D grid.

0 commit comments

Comments
 (0)