[ENH]: do_3d_projection could restore original verts order after draw() finishes #23155
Labels
Difficulty: Medium
https://matplotlib.org/devdocs/devel/contribute.html#good-first-issues
Good first issue
Open a pull request against these issues if there are no active ones!
New feature
topic: mplot3d
Milestone
Problem
do_3d_projection() reorders vertices of various 3D collection artists in z-depth. Once the drawing is done, it would be useful to restore back the original order, so that e.g. interactive tools (mplcursors) reporting the index of a picked collection member get the original index as set by the user (anntzer/mplcursors#49). This should be reasonably cheap to do as we can probably just stash the original arrays somewhere and restore them as attributes at the end.
In practice, this probably means adding another API like
doing_3d_projection()
which returns a contextmanager (or lettingdo_3d_projection()
possibly return a contextmanager and doing a typecheck on that) and replacing the calls todo_3d_projection()
tostack.enter_context(artist.doing_3d_projection())
wherestack = ExitStack()
is defined at the top ofAxes3D.draw()
.Proposed solution
No response
The text was updated successfully, but these errors were encountered: