Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions lib/matplotlib/backend_bases.py
Original file line number Diff line number Diff line change
Expand Up @@ -2903,6 +2903,7 @@ class NavigationToolbar2:
('Home', 'Reset original view', 'home', 'home'),
('Back', 'Back to previous view', 'back', 'back'),
('Forward', 'Forward to next view', 'forward', 'forward'),
('Views', 'Snap into planar views', 'matplotlib', 'snap_view'),
(None, None, None, None),
('Pan',
'Left button pans, Right button zooms\n'
Expand Down Expand Up @@ -2935,6 +2936,16 @@ def __init__(self, canvas):
self.mode = _Mode.NONE # a mode string for the status bar
self.set_history_buttons()

def draw_lambda(elev, azim):
ax = self.canvas.figure.gca()
ax.view_init(elev=elev, azim=azim)
self.canvas.draw_idle()
self.options = [
("Go to X-Y view", functools.partial(draw_lambda, elev=90, azim=-90)),
("Go to Y-Z view", functools.partial(draw_lambda, elev=0, azim=0)),
("Go to X-Z view", functools.partial(draw_lambda, elev=0, azim=-90))
]

def set_message(self, s):
"""Display a message on toolbar or in status bar."""

Expand Down Expand Up @@ -3366,6 +3377,9 @@ def save_figure(self, *args):
"""
raise NotImplementedError

def snap_view(self, *args):
raise NotImplementedError

def update(self):
"""Reset the Axes stack."""
self._nav_stack.clear()
Expand Down
8 changes: 8 additions & 0 deletions lib/matplotlib/backends/backend_qt.py
Original file line number Diff line number Diff line change
Expand Up @@ -968,6 +968,14 @@ def save_figure(self, *args):
QtWidgets.QMessageBox.StandardButton.NoButton)
return fname

def snap_view(self, *args):
action = self._actions.get('snap_view')
btn = self.widgetForAction(action)
menu = QtWidgets.QMenu()
for label, action in self.options:
menu.addAction(label, action)
menu.exec(btn.mapToGlobal(QtCore.QPoint(0, btn.height())))

def set_history_buttons(self):
can_backward = self._nav_stack._pos > 0
can_forward = self._nav_stack._pos < len(self._nav_stack) - 1
Expand Down
Loading