Index: plottools/src/danse/common/plottools/PlotPanel.py
===================================================================
--- plottools/src/danse/common/plottools/PlotPanel.py	(revision f80236f07fd27a5564be7dc22883b7989564c9b8)
+++ plottools/src/danse/common/plottools/PlotPanel.py	(revision 7434020a097527ae6efc0f0e238d753b17df8b04)
@@ -21,4 +21,8 @@
 from binder import BindArtist
 from matplotlib.font_manager import FontProperties
+
+from mpl_toolkits.mplot3d import Axes3D
+#from matplotlib import cm
+#from matplotlib.ticker import LinearLocator, FixedLocator, FormatStrFormatter
 
 DEBUG = False
@@ -119,4 +123,5 @@
         wx.Panel.__init__(self, parent, id=id, **kwargs)
         self.parent = parent
+        self.dimension = 1
         self.gotLegend = 0  #to begin, legend is not picked. 
         self.legend_pos_loc = None
@@ -1427,6 +1432,4 @@
         
         """
-        #Re-adjust colorbar
-        self.figure.subplots_adjust(left=0.2, right=.8, bottom=.2)        
         self.data = data
         self.qx_data = qx_data
@@ -1470,18 +1473,48 @@
             zmin_temp = self.zmin_2D
         self.cmap = cmap
-        im = self.subplot.imshow(output, interpolation='nearest', 
-                                 origin='lower',
-                                 vmin=zmin_temp, vmax=self.zmax_2D,
-                                 cmap=self.cmap, 
-                                 extent=(self.xmin_2D, self.xmax_2D,
-                                            self.ymin_2D, self.ymax_2D))
-        
-        #Add color bar and its label
-        #TODO: make the size and location interactive to the image plot.
-        cbax = self.subplot.figure.add_axes([0.84,0.2,0.02,0.7])
-        cb = self.subplot.figure.colorbar(im, cax=cbax)
+        if self.dimension != 3:
+            #Re-adjust colorbar
+            self.subplot.figure.subplots_adjust(left=0.2, right=.8, bottom=.2)
+            
+            im = self.subplot.imshow(output, interpolation='nearest', 
+                                     origin='lower',
+                                     vmin=zmin_temp, vmax=self.zmax_2D,
+                                     cmap=self.cmap, 
+                                     extent=(self.xmin_2D, self.xmax_2D,
+                                                self.ymin_2D, self.ymax_2D))
+            cbax = self.subplot.figure.add_axes([0.84,0.2,0.02,0.7])
+        else:
+            # clear the previous 2D from memory
+            self.subplot.figure.clf()
+            self.subplot.figure.subplots_adjust(left=0.1, right=.8, bottom=.1)  
+            try:
+                # mpl >= 1.0.0
+                ax = self.subplot.figure.gca(projection='3d')
+                #ax.disable_mouse_rotation()
+                cbax = self.subplot.figure.add_axes([0.84,0.1,0.02,0.8])
+            except:
+                # mpl < 1.0.0
+                ax =  Axes3D(self.subplot.figure)
+                cbax = None
+
+            X = self.x_bins[0:-1]
+            Y = self.y_bins[0:-1]
+            X, Y = numpy.meshgrid(X, Y)
+    
+            im = ax.plot_surface(X, Y, output, rstride=1, cstride=1, cmap=cmap,
+                                   linewidth=0, antialiased=False)
+            #ax.set_zlim3d(zmin_temp, self.zmax_2D)
+            #ax.set_frame_on(False)
+            self.subplot.set_axis_off()    
+            
+        if cbax == None:
+            cb =self.subplot.figure.colorbar(im, shrink=0.6, aspect=20)
+        else:
+            cb =self.subplot.figure.colorbar(im, cax=cbax)
         cb.update_bruteforce(im)
         cb.set_label(self.scale)
-        self.subplot.figure.canvas.draw_idle()
+        
+        #if self.dimension != 3:
+        self.figure.canvas.draw_idle()
     
     def _build_matrix(self):
Index: plottools/src/danse/common/plottools/canvas.py
===================================================================
--- plottools/src/danse/common/plottools/canvas.py	(revision 0e553fd2808f3d9036eef66181f51921babd5081)
+++ plottools/src/danse/common/plottools/canvas.py	(revision 7434020a097527ae6efc0f0e238d753b17df8b04)
@@ -250,5 +250,5 @@
         
         """
-        if sys.platform == 'linux2':
+        if sys.platform == 'linux2' or self.panel.dimension == 3:
             evt.Skip()
         else:
