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

Skip to content

Commit 86d0fc1

Browse files
committed
Deprecate 3D properties on the renderer during draw.
All internal Artists use `self.axes.*` instead.
1 parent 93b4b3b commit 86d0fc1

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
@@ -434,36 +434,39 @@ def draw(self, renderer):
434434

435435
# add the projection matrix to the renderer
436436
self.M = self.get_proj()
437-
renderer.M = self.M
438-
renderer.vvec = self.vvec
439-
renderer.eye = self.eye
440-
renderer.get_axis_position = self.get_axis_position
441-
442-
# Calculate projection of collections and patches and zorder them.
443-
# Make sure they are drawn above the grids.
444-
zorder_offset = max(axis.get_zorder()
445-
for axis in self._get_axis_list()) + 1
446-
for i, col in enumerate(
447-
sorted(self.collections,
448-
key=lambda col: col.do_3d_projection(renderer),
449-
reverse=True)):
450-
col.zorder = zorder_offset + i
451-
for i, patch in enumerate(
452-
sorted(self.patches,
453-
key=lambda patch: patch.do_3d_projection(renderer),
454-
reverse=True)):
455-
patch.zorder = zorder_offset + i
456-
457-
if self._axis3don:
458-
# Draw panes first
459-
for axis in self._get_axis_list():
460-
axis.draw_pane(renderer)
461-
# Then axes
462-
for axis in self._get_axis_list():
463-
axis.draw(renderer)
437+
props3d = {
438+
name: cbook.deprecated('3.4', name=name,
439+
alternative=f'self.axes.{name}')(
440+
property(lambda self, _value=getattr(self, name): _value))
441+
for name in ['M', 'vvec', 'eye', 'get_axis_position']
442+
}
464443

465-
# Then rest
466-
super().draw(renderer)
444+
with cbook._setattr_cm(type(renderer), **props3d):
445+
# Calculate projection of collections and patches and zorder them.
446+
# Make sure they are drawn above the grids.
447+
zorder_offset = max(axis.get_zorder()
448+
for axis in self._get_axis_list()) + 1
449+
for i, col in enumerate(
450+
sorted(self.collections,
451+
key=lambda col: col.do_3d_projection(renderer),
452+
reverse=True)):
453+
col.zorder = zorder_offset + i
454+
for i, patch in enumerate(
455+
sorted(self.patches,
456+
key=lambda patch: patch.do_3d_projection(renderer),
457+
reverse=True)):
458+
patch.zorder = zorder_offset + i
459+
460+
if self._axis3don:
461+
# Draw panes first
462+
for axis in self._get_axis_list():
463+
axis.draw_pane(renderer)
464+
# Then axes
465+
for axis in self._get_axis_list():
466+
axis.draw(renderer)
467+
468+
# Then rest
469+
super().draw(renderer)
467470

468471
def get_axis_position(self):
469472
vals = self.get_w_lims()

0 commit comments

Comments
 (0)