Index: lib/mpl_toolkits/mplot3d/axes3d.py
===================================================================
--- lib/mpl_toolkits/mplot3d/axes3d.py	(revision 8731)
+++ lib/mpl_toolkits/mplot3d/axes3d.py	(working copy)
@@ -381,7 +381,7 @@
         M = np.dot(perspM, M0)
         return M
 
-    def mouse_init(self, rotate_btn=1, zoom_btn=3):
+    def mouse_init(self, rotate_btn=1, pan_btn=2, zoom_btn=3):
         """Initializes mouse button callbacks to enable 3D rotation of
         the axes.  Also optionally sets the mouse buttons for 3D rotation
         and zooming.
@@ -393,6 +393,10 @@
                       button or buttons to use for 3D rotation of the axes.
                       Default = 1.
 
+        *pan_btn*     The integer or list of integers specifying which mouse
+                      button or buttons to use to pan the 3D axes.
+                      Default = 2.
+
         *zoom_btn*    The integer or list of integers specifying which mouse
                       button or buttons to use to zoom the 3D axes.
                       Default = 3.
@@ -410,6 +414,7 @@
             warnings.warn('Axes3D.figure.canvas is \'None\', mouse rotation disabled.  Set canvas then call Axes3D.mouse_init().')
 
         self._rotate_btn = np.atleast_1d(rotate_btn)
+        self._pan_btn = np.atleast_1d(pan_btn)
         self._zoom_btn = np.atleast_1d(zoom_btn)
 
     def cla(self):
@@ -548,11 +553,24 @@
             self.get_proj()
             self.figure.canvas.draw()
 
-#        elif self.button_pressed == 2:
+        # Pan
+        elif self.button_pressed in self._pan_btn:
             # pan view
-            # project xv,yv,zv -> xw,yw,zw
-            # pan
-#            pass
+            if dx == 0 and dy == 0:
+                return
+            minx, maxx, miny, maxy, minz, maxz = self.get_w_lims()
+            caz = np.cos(np.radians(self.azim))
+            saz = np.sin(np.radians(self.azim))
+            cel = np.cos(np.radians(self.elev))
+            sel = np.sin(np.radians(self.elev))
+            px = (-saz * dx - sel * caz * dy) * abs(maxx - minx) * 10.
+            py = (caz * dx - sel * saz * dy) * abs(maxy - miny) * 10.
+            pz = (cel * dy) * abs(maxz - minz) * 10.
+            self.set_xlim3d(minx - px, maxx - px)
+            self.set_ylim3d(miny - py, maxy - py)
+            self.set_zlim3d(minz - pz, maxz - pz)
+            self.get_proj()
+            self.figure.canvas.draw()
 
         # Zoom
         elif self.button_pressed in self._zoom_btn:
