diff --git a/lib/matplotlib/backends/backend_wx.py b/lib/matplotlib/backends/backend_wx.py index f6bc3d23a50f..f7df0707e637 100644 --- a/lib/matplotlib/backends/backend_wx.py +++ b/lib/matplotlib/backends/backend_wx.py @@ -1614,10 +1614,12 @@ def press(self, event): if not self.retinaFix: self.wxoverlay = wx.Overlay() else: - self.savedRetinaImage = self.canvas.copy_from_bbox( - self.canvas.figure.gca().bbox) - self.zoomStartX = event.xdata - self.zoomStartY = event.ydata + if event.inaxes is not None: + self.savedRetinaImage = self.canvas.copy_from_bbox( + event.inaxes.bbox) + self.zoomStartX = event.xdata + self.zoomStartY = event.ydata + self.zoomAxes = event.inaxes def release(self, event): if self._active == 'ZOOM': @@ -1631,6 +1633,8 @@ def release(self, event): if self.prevZoomRect: self.prevZoomRect.pop(0).remove() self.prevZoomRect = None + if self.zoomAxes: + self.zoomAxes = None def draw_rubberband(self, event, x0, y0, x1, y1): if self.retinaFix: # On Macs, use the following code @@ -1643,10 +1647,10 @@ def draw_rubberband(self, event, x0, y0, x1, y1): Y0, Y1 = self.zoomStartY, event.ydata lineX = (X0, X0, X1, X1, X0) lineY = (Y0, Y1, Y1, Y0, Y0) - self.prevZoomRect = self.canvas.figure.gca().plot( + self.prevZoomRect = self.zoomAxes.plot( lineX, lineY, '-', color=rubberBandColor) - self.canvas.figure.gca().draw_artist(self.prevZoomRect[0]) - self.canvas.blit(self.canvas.figure.gca().bbox) + self.zoomAxes.draw_artist(self.prevZoomRect[0]) + self.canvas.blit(self.zoomAxes.bbox) return # Use an Overlay to draw a rubberband-like bounding box.