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

Skip to content

Commit 45777e4

Browse files
committed
Deprecate 3D properties on the renderer during draw.
All internal Artists use `self.axes.*` instead.
1 parent ab7e966 commit 45777e4

File tree

2 files changed

+45
-29
lines changed

2 files changed

+45
-29
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
3D properties on renderers
2+
~~~~~~~~~~~~~~~~~~~~~~~~~~
3+
4+
The properties of the 3D Axes that were placed on the Renderer during draw are
5+
now deprecated:
6+
7+
* ``renderer.M``
8+
* ``renderer.eye``
9+
* ``renderer.vvec``
10+
* ``renderer.get_axis_position``
11+
12+
These attributes are all available via `.Axes3D`, which can be accessed via
13+
``self.axes`` on all `.Artist`\s.

lib/mpl_toolkits/mplot3d/axes3d.py

Lines changed: 32 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)