Revision: 8114
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8114&view=rev
Author:   leejjoon
Date:     2010-02-06 23:52:34 +0000 (Sat, 06 Feb 2010)

Log Message:
-----------
add Colorbar.set_ticks and Colorbar.set_ticklabels

Modified Paths:
--------------
    trunk/matplotlib/lib/matplotlib/colorbar.py

Modified: trunk/matplotlib/lib/matplotlib/colorbar.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/colorbar.py 2010-02-06 23:44:28 UTC (rev 
8113)
+++ trunk/matplotlib/lib/matplotlib/colorbar.py 2010-02-06 23:52:34 UTC (rev 
8114)
@@ -18,6 +18,7 @@
 is a thin wrapper over :meth:`~matplotlib.figure.Figure.colorbar`.
 
 '''
+import warnings
 
 import numpy as np
 import matplotlib as mpl
@@ -207,6 +208,7 @@
                            filled=True,
                            ):
         self.ax = ax
+        self._patch_ax()
         if cmap is None: cmap = cm.get_cmap()
         if norm is None: norm = colors.Normalize()
         self.alpha = alpha
@@ -239,6 +241,13 @@
         # The rest is in a method so we can recalculate when clim changes.
         self.draw_all()
 
+    def _patch_ax(self):
+        def _warn(*args, **kw):
+            warnings.warn("Use the colorbar set_ticks() method instead.")
+
+        self.ax.set_xticks = _warn
+        self.ax.set_yticks = _warn
+
     def draw_all(self):
         '''
         Calculate any free parameters based on the current cmap and norm,
@@ -253,6 +262,50 @@
             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.xaxis.set_ticks([])
+            ax.yaxis.set_label_position('right')
+            ax.yaxis.set_ticks_position('right')
+            ax.yaxis.set_ticks(ticks)
+            ax.set_yticklabels(ticklabels)
+            ax.yaxis.get_major_formatter().set_offset_string(offset_string)
+
+        else:
+            ax.yaxis.set_ticks([])
+            ax.xaxis.set_label_position('bottom')
+            ax.xaxis.set_ticks(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.
+        """
+        if isinstance(self.locator, ticker.FixedLocator):
+            self.formatter = ticker.FixedFormatter(ticklabels)
+            if update_ticks:
+                self.update_ticks()
+        else:
+            warnings.warn("set_ticks() must have been called.")
+
+
     def _config_axes(self, X, Y):
         '''
         Make an axes patch and outline.
@@ -275,22 +328,10 @@
                  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':
             self.ax.set_ylabel(self._label, **self._labelkw)


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
Matplotlib-checkins mailing list
Matplotlib-checkins@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to