diff --git a/lib/matplotlib/colorbar.py b/lib/matplotlib/colorbar.py
index 3f06ea9..091660a 100644
--- a/lib/matplotlib/colorbar.py
+++ b/lib/matplotlib/colorbar.py
@@ -253,6 +253,46 @@ class ColorbarBase(cm.ScalarMappable):
             self._add_solids(X, Y, C)
         self._set_label()
 
+    def update_ticks(self):
+        """
+        Force the update of the ticks and ticklabels. This must be
+        called whenever the tick locator and/or tick formatter changes.
+        """
+        ax = self.ax
+        ticks, ticklabels, offset_string = self._ticker()
+        if self.orientation == 'vertical':
+            ax.set_xticks([])
+            ax.yaxis.set_label_position('right')
+            ax.yaxis.set_ticks_position('right')
+            ax.set_yticks(ticks)
+            ax.set_yticklabels(ticklabels)
+            ax.yaxis.get_major_formatter().set_offset_string(offset_string)
+
+        else:
+            ax.set_yticks([])
+            ax.xaxis.set_label_position('bottom')
+            ax.set_xticks(ticks)
+            ax.set_xticklabels(ticklabels)
+            ax.xaxis.get_major_formatter().set_offset_string(offset_string)
+
+    def set_ticks(self, ticks, update_ticks=True):
+        """
+        set tick locations. Tick locations are updated immediately unless update_ticks is
+        *False*. To manually update the ticks, call *update_ticks* method explicitly.
+        """
+        self.locator = ticker.FixedLocator(ticks, nbins=len(ticks))
+        if update_ticks:
+            self.update_ticks()
+
+    def set_ticklabels(self, ticklabels, update_ticks=True):
+        """
+        set tick labels. Tick labels are updated immediately unless update_ticks is
+        *False*. To manually update the ticks, call *update_ticks* method explicitly.
+        """
+        self.formatter = ticker.FixedFormatter(ticklabels)
+        if update_ticks:
+            self.update_ticks()
+
     def _config_axes(self, X, Y):
         '''
         Make an axes patch and outline.
@@ -275,21 +315,9 @@ class ColorbarBase(cm.ScalarMappable):
                  linewidth=0.01,
                  zorder=-1)
         ax.add_artist(self.patch)
-        ticks, ticklabels, offset_string = self._ticker()
-        if self.orientation == 'vertical':
-            ax.set_xticks([])
-            ax.yaxis.set_label_position('right')
-            ax.yaxis.set_ticks_position('right')
-            ax.set_yticks(ticks)
-            ax.set_yticklabels(ticklabels)
-            ax.yaxis.get_major_formatter().set_offset_string(offset_string)
 
-        else:
-            ax.set_yticks([])
-            ax.xaxis.set_label_position('bottom')
-            ax.set_xticks(ticks)
-            ax.set_xticklabels(ticklabels)
-            ax.xaxis.get_major_formatter().set_offset_string(offset_string)
+        self.update_ticks()
+
 
     def _set_label(self):
         if self.orientation == 'vertical':
