Ejemplo n.º 1
0
class YearLocator(DateLocator):
    """
    Make ticks on a given day of each year that is a multiple of base.

    Examples:
    # Tick every year on Jan 1st
    locator = YearLocator()

    # Tick every 5 years on July 4th
    locator = YearLocator(5, month=7, day=4)

    
    """
    def __init__(self, base=1, month=1, day=1, tz=None):
        """
        mark years that are multiple of base on a given month and day
        (default jan 1)
        """
        DateLocator.__init__(self, tz)
        self.base = Base(base)
        self.replaced = { 'month'  : month,
                          'day'    : day,
                          'hour'   : 0,
                          'minute' : 0,
                          'second' : 0,
                          'tzinfo' : tz
                          }


    def __call__(self):
        self.verify_intervals()

        dmin, dmax = self.viewlim_to_dt()
        ymin = self.base.le(dmin.year)
        ymax = self.base.ge(dmax.year)    #print 'DMIN', num2date(dmin, tz).strftime(fmt)
    #print 'DMAX', num2date(dmax, tz).strftime(fmt)


        ticks = [dmin.replace(year=ymin, **self.replaced)]
        while 1:
            dt = ticks[-1]
            if dt.year>=ymax: return date2num(ticks)
            year = dt.year + self.base.get_base()
            ticks.append(dt.replace(year=year, **self.replaced))

    def autoscale(self):
        """
        Set the view limits to include the data range
        """        
        self.verify_intervals()        
        dmin, dmax = self.datalim_to_dt()

        ymin = self.base.le(dmin.year)
        ymax = self.base.ge(dmax.year)        
        vmin = dmin.replace(year=ymin, **self.replaced)
        vmax = dmax.replace(year=ymax, **self.replaced)        

        vmin = date2num(vmin)
        vmax = date2num(vmax)        
        return self.nonsingular(vmin, vmax)
Ejemplo n.º 2
0
class YearLocator(DateLocator):
    """
    Make ticks on a given day of each year that is a multiple of base.

    Examples:
    # Tick every year on Jan 1st
    locator = YearLocator()

    # Tick every 5 years on July 4th
    locator = YearLocator(5, month=7, day=4)

    
    """
    def __init__(self, base=1, month=1, day=1, tz=None):
        """
        mark years that are multiple of base on a given month and day
        (default jan 1)
        """
        DateLocator.__init__(self, tz)
        self.base = Base(base)
        self.replaced = {
            'month': month,
            'day': day,
            'hour': 0,
            'minute': 0,
            'second': 0,
            'tzinfo': tz
        }

    def __call__(self):
        self.verify_intervals()

        dmin, dmax = self.viewlim_to_dt()
        ymin = self.base.le(dmin.year)
        ymax = self.base.ge(
            dmax.year)  #print 'DMIN', num2date(dmin, tz).strftime(fmt)
        #print 'DMAX', num2date(dmax, tz).strftime(fmt)

        ticks = [dmin.replace(year=ymin, **self.replaced)]
        while 1:
            dt = ticks[-1]
            if dt.year >= ymax: return date2num(ticks)
            year = dt.year + self.base.get_base()
            ticks.append(dt.replace(year=year, **self.replaced))

    def autoscale(self):
        """
        Set the view limits to include the data range
        """
        self.verify_intervals()
        dmin, dmax = self.datalim_to_dt()

        ymin = self.base.le(dmin.year)
        ymax = self.base.ge(dmax.year)
        vmin = dmin.replace(year=ymin, **self.replaced)
        vmax = dmax.replace(year=ymax, **self.replaced)

        vmin = date2num(vmin)
        vmax = date2num(vmax)
        return self.nonsingular(vmin, vmax)
Ejemplo n.º 3
0
 def __init__(self, base=1, month=1, day=1, tz=None):
     """
     mark years that are multiple of base on a given month and day
     (default jan 1)
     """
     DateLocator.__init__(self, tz)
     self.base = Base(base)
     self.replaced = { 'month'  : month,
                       'day'    : day,
                       'hour'   : 0,
                       'minute' : 0,
                       'second' : 0,
                       'tzinfo' : tz
                       }
Ejemplo n.º 4
0
 def __init__(self, base=1, month=1, day=1, tz=None):
     """
     mark years that are multiple of base on a given month and day
     (default jan 1)
     """
     DateLocator.__init__(self, tz)
     self.base = Base(base)
     self.replaced = { 'month'  : month,
                       'day'    : day,
                       'hour'   : 0,
                       'minute' : 0,
                       'second' : 0,
                       'tzinfo' : tz
                       }