Ignore:
Timestamp:
04/12/09 16:07:45 (11 years ago)
Author:
pnorton
Message:

Imroved the colour bar code so that a legend colour bar can be used without specifying any intervals.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • qesdi/geoplot/trunk/lib/geoplot/colour_bar.py

    r5946 r6089  
    1313import geoplot 
    1414 
    15 from geoplot.colour_scheme import COLOUR_SCHEME_SCALE 
    16  
    17  
    1815config = geoplot_config.getConfig() 
    1916 
     
    2421ADJUSTED_TICK_FORMAT = "%1.2f" 
    2522 
     23class COLOUR_BAR_STYLES: 
     24    LEGEND='legend' 
     25    CONTINUOUS = 'continuous'  
     26 
     27    @staticmethod 
     28    def all(): 
     29        return [COLOUR_BAR_STYLES.CONTINUOUS, COLOUR_BAR_STYLES.LEGEND] 
     30 
     31class COLOUR_SCHEME_SCALE: 
     32    LINEAR='linear' 
     33    LOG='log' 
     34 
    2635class ColourBar(object): 
    2736 
    28     def __init__(self, colourBarLabel="",colourBarPosition='horizontal', colourBarStyle='continuous'): 
     37    def __init__(self, colourBarLabel="",colourBarPosition='horizontal', colourBarStyle=COLOUR_BAR_STYLES.CONTINUOUS): 
    2938 
    3039        self._position = None 
     
    4857        log.debug("drawing colour bar") 
    4958         
    50         intervalColourbar = isinstance(colourScheme, geoplot.colour_scheme.IntervalColourScheme) 
    51          
    52         log.debug("intervalColourbar = %s, self.colourBarStyle = %s" % (intervalColourbar, self.colourBarStyle)) 
    53          
    54         if self.colourBarStyle == 'legend' and intervalColourbar: 
     59        if self.colourBarStyle == 'legend': 
    5560            self._drawLegendColourBar(colourBarAxis, colourScheme, fontSize) 
    5661        else: 
     
    9095         
    9196        """ 
    92          
    93         #to make a legend colour bar we need an interval colour scheme  
    94         assert isinstance(colourScheme, geoplot.colour_scheme.IntervalColourScheme) 
    95           
    9697        kwargs = {} 
    9798         
     
    99100        norm = colourScheme.norm 
    100101         
     102        locations, labels = colourScheme.labelLocations, colourScheme.labels 
     103 
    101104        kwargs['orientation'] = self.colourBarPosition 
    102105   
    103         handles = [Rectangle((0,0), 1, 1, fc=cmap(norm(i))) for i in colourScheme.labelLocations] 
    104         labels = colourScheme.labels 
     106        handles = [Rectangle((0,0), 1, 1, fc=cmap(norm(i))) for i in locations] 
     107        labels = labels 
    105108         
    106109        if self.colourBarPosition == 'horizontal': 
     
    126129                colourBarAxis.set_ylabel(self.colourBarLabel, fontdict=labelDictionary) 
    127130                 
    128                          
    129          
    130131        return leg 
    131132         
     
    221222                      intervals=None, 
    222223                      intervalNames=None, 
     224                      numIntervals=None, 
    223225                      colourBarStyle='continuous', 
    224226                      dpi=100): 
     
    233235                 colourBarMax=colourBarMax,  
    234236                 colourBarScale=colourBarScale, 
     237                 numIntervals=numIntervals, 
    235238                 intervals=intervals, 
    236239                 intervalNames=intervalNames) 
    237240     
    238     colourScheme = schemeBuilder.buildScheme()     
     241    colourScheme = schemeBuilder.buildScheme(colourBarStyle)     
    239242    log.debug("colourScheme.norm.__class__ = %s" % (colourScheme.norm.__class__,)) 
    240243    #for agg bakcend 
Note: See TracChangeset for help on using the changeset viewer.