@@ -399,36 +399,39 @@ def draw(self, renderer):
399399
400400 # add the projection matrix to the renderer
401401 self .M = self .get_proj ()
402- renderer .M = self .M
403- renderer .vvec = self .vvec
404- renderer .eye = self .eye
405- renderer .get_axis_position = self .get_axis_position
406-
407- # Calculate projection of collections and patches and zorder them.
408- # Make sure they are drawn above the grids.
409- zorder_offset = max (axis .get_zorder ()
410- for axis in self ._get_axis_list ()) + 1
411- for i , col in enumerate (
412- sorted (self .collections ,
413- key = lambda col : col .do_3d_projection (renderer ),
414- reverse = True )):
415- col .zorder = zorder_offset + i
416- for i , patch in enumerate (
417- sorted (self .patches ,
418- key = lambda patch : patch .do_3d_projection (renderer ),
419- reverse = True )):
420- patch .zorder = zorder_offset + i
421-
422- if self ._axis3don :
423- # Draw panes first
424- for axis in self ._get_axis_list ():
425- axis .draw_pane (renderer )
426- # Then axes
427- for axis in self ._get_axis_list ():
428- axis .draw (renderer )
402+ props3d = {
403+ name : cbook .deprecated ('3.4' , name = name ,
404+ alternative = f'self.axes.{ name } ' )(
405+ property (lambda self , _value = getattr (self , name ): _value ))
406+ for name in ['M' , 'vvec' , 'eye' , 'get_axis_position' ]
407+ }
429408
430- # Then rest
431- super ().draw (renderer )
409+ with cbook ._setattr_cm (type (renderer ), ** props3d ):
410+ # Calculate projection of collections and patches and zorder them.
411+ # Make sure they are drawn above the grids.
412+ zorder_offset = max (axis .get_zorder ()
413+ for axis in self ._get_axis_list ()) + 1
414+ for i , col in enumerate (
415+ sorted (self .collections ,
416+ key = lambda col : col .do_3d_projection (renderer ),
417+ reverse = True )):
418+ col .zorder = zorder_offset + i
419+ for i , patch in enumerate (
420+ sorted (self .patches ,
421+ key = lambda patch : patch .do_3d_projection (renderer ),
422+ reverse = True )):
423+ patch .zorder = zorder_offset + i
424+
425+ if self ._axis3don :
426+ # Draw panes first
427+ for axis in self ._get_axis_list ():
428+ axis .draw_pane (renderer )
429+ # Then axes
430+ for axis in self ._get_axis_list ():
431+ axis .draw (renderer )
432+
433+ # Then rest
434+ super ().draw (renderer )
432435
433436 def get_axis_position (self ):
434437 vals = self .get_w_lims ()
0 commit comments