def image(self,var,time,level=0,clip=None,mono=False,illuminate=None):
        """Plot a colour map.

        var: CFvariable
        time: time slice
        level: horizontal slice
        clip: only display data where clip>0.
        mono: convert colour to mono
        illuminate: azimuth of light source (default None)
        """
        
        clipped = False
        if clip in ['topg','thk','usurf','is'] :
            cvar = CFvariable(var.cffile,clip)
            self.clip(cvar.getGMTgrid(time),0.1)
            clipped = True
        if mono:
            args="-M"
        else:
            args=""

        illu = False
        if illuminate in ['topg','thk','usurf','is'] :
            illu = True
            illu_var = CFvariable(var.cffile,illuminate)
            illu_grd = illu_var.getGMTgrid(time,velogrid=var.isvelogrid)
            illu_arg = "=1 -G.__illu.grd -A0 -Ne0.6"
            gridcommand('grdgradient',illu_arg,illu_grd,verbose=self.verbose)
            args = "%s -I.__illu.grd"%args
            
        PyGMT.AreaXY.image(self,var.getGMTgrid(time,level=level),var.colourmap.cptfile,args=args)
        if clipped:
            self.unclip()
        if illu:
            os.remove('.__illu.grd')
    def land(self,time,grey='180',illuminate=None):
        """Plot area above sea level.

        time: time slice
        grey: grey value."""


        args=""

        cvar = CFvariable(self.file,'topg')
        cvar_grd = cvar.getGMTgrid(time)
        if illuminate in ['topg','thk','is'] :
            illu_arg = "=1 -G.__illu.grd -A0 -Ne0.6"
            gridcommand('grdgradient',illu_arg,cvar_grd,verbose=self.verbose)
            args = "%s -I.__illu.grd"%args

        # create colour map
        cmap = open('.__grey.cpt','w')
        cmap.write('-15000 255     255     255  0 255     255     255\n')
        cmap.write('0 %s %s %s 10000  %s %s %s \n'%(grey,grey,grey,grey,grey,grey))
        cmap.close()

        
        PyGMT.AreaXY.image(self,cvar_grd,'.__grey.cpt',args=args)
        os.remove('.__grey.cpt')
    def land(self,time,grey='180',illuminate=None):
        """Plot area above sea level.

        time: time slice
        grey: grey value."""


        args=""

        cvar = CFvariable(self.file,'topg')
        cvar_grd = cvar.getGMTgrid(time)
        if illuminate in ['topg','thk','is'] :
            illu_file = tempfile.NamedTemporaryFile(suffix='.grd')
            illu_arg = "=1 -G%s -A0 -Ne0.6"%(illu_file.name)
            gridcommand('grdgradient',illu_arg,cvar_grd,verbose=self.verbose)
            args = "%s -I%s"%(args,illu_file.name)

        # create colour map
        cmap = tempfile.NamedTemporaryFile(suffix='.cpt')
        cmap.write('-15000 255     255     255  0 255     255     255\n')
        cmap.write('0 %s %s %s 10000  %s %s %s \n'%(grey,grey,grey,grey,grey,grey))
        cmap.flush()

        
        PyGMT.AreaXY.image(self,cvar_grd,cmap.name,args=args)
        cmap.close()
    def land(self,time,grey='240'):
        """Plot area above sea level.

        time: time slice
        grey: grey value."""

        cvar = CFvariable(self.file,'topg')
        self.clip(cvar.getGMTgrid(time),0.1)
        self.line('-W -L -G%s'%grey,[self.ll[0],self.ur[0],self.ur[0],self.ll[0]],[self.ll[1],self.ll[1],self.ur[1],self.ur[1]])
        self.unclip()
    def extent(self, args, time, cffile=None, cntrtype="c"):
        """Plot ice extent.

        args: further arguments
        time: time slice
        cntrtype: contourtype, c for normal contour, a for annotated"""

        if cffile == None:
            cffile = self.file
        extent = CFvariable(cffile, "thk").getGMTgrid(time)
        extent.data = extent.data - 0.1 + cffile.time(time)
        PyGMT.AreaXY.contour(self, extent, [cffile.time(time)], args, cntrtype)
    def image(self,var,time,level=0,clip=None,mono=False):
        """Plot a colour map.

        var: CFvariable
        time: time slice
        level: horizontal slice
        clip: only display data where clip>0.
        mono: convert colour to mono
        """
        
        clipped = False
        if clip in ['topg','thk','usurf'] :
            cvar = CFvariable(var.cffile,clip)
            self.clip(cvar.getGMTgrid(time),0.1)
            clipped = True
        if mono:
            args="-M"
        else:
            args=""
        PyGMT.AreaXY.image(self,var.getGMTgrid(time,level=level),var.colourmap.cptfile,args=args)
        if clipped:
            self.unclip()
    def raw_image(self, cffile, time, grid, colourmap, isvelogrid=False, clip=None, mono=False, illuminate=None):
        """Plot a GMT grid
        
        cffile: cffile
        time: time slice
        grid: is the GMT grid to be plotted
        isvelogrid: boolean whether we are plotting on velogrid
        colourmap: is the colourmap to be used
        clip: only display data where clip>0.
        mono: convert colour to mono
        illuminate: azimuth of light source (default None)
        """

        clipped = False
        if clip in ["topg", "thk", "usurf", "is"]:
            cvar = CFvariable(cffile, clip)
            self.clip(cvar.getGMTgrid(time), 0.1)
            clipped = True
        if mono:
            args = "-M"
        else:
            args = ""

        illu = False
        if illuminate in ["topg", "thk", "usurf", "is"]:
            illu = True
            illu_var = CFvariable(cffile, illuminate)
            illu_grd = illu_var.getGMTgrid(time, velogrid=isvelogrid)
            illu_file = tempfile.NamedTemporaryFile(suffix=".grd")
            illu_arg = "=bf -G%s -A0 -Ne0.6" % illu_file.name
            gridcommand("grdgradient", illu_arg, illu_grd, verbose=self.verbose)
            args = "%s -I%s" % (args, illu_file.name)

        PyGMT.AreaXY.image(self, grid, colourmap, args=args)
        if clipped:
            self.unclip()
        if illu:
            illu_file.close()
    def land(self, time, grey="180", illuminate=None):
        """Plot area above sea level.

        time: time slice
        grey: grey value."""

        args = ""

        cvar = CFvariable(self.file, "topg")
        cvar_grd = cvar.getGMTgrid(time)
        if illuminate in ["topg", "thk", "is"]:
            illu_arg = "=1 -G.__illu.grd -A0 -Ne0.6"
            gridcommand("grdgradient", illu_arg, cvar_grd, verbose=self.verbose)
            args = "%s -I.__illu.grd" % args

        # create colour map
        cmap = open(".__grey.cpt", "w")
        cmap.write("-15000 255     255     255  0 255     255     255\n")
        cmap.write("0 %s %s %s 10000  %s %s %s \n" % (grey, grey, grey, grey, grey, grey))
        cmap.close()

        PyGMT.AreaXY.image(self, cvar_grd, ".__grey.cpt", args=args)
        os.remove(".__grey.cpt")
    def land(self, time, grey="180", illuminate=None):
        """Plot area above sea level.

        time: time slice
        grey: grey value."""

        args = ""

        cvar = CFvariable(self.file, "topg")
        cvar_grd = cvar.getGMTgrid(time)
        if illuminate in ["topg", "thk", "is"]:
            illu_file = tempfile.NamedTemporaryFile(suffix=".grd")
            illu_arg = "=bf -G%s -A0 -Ne0.6" % (illu_file.name)
            gridcommand("grdgradient", illu_arg, cvar_grd, verbose=self.verbose)
            args = "%s -I%s" % (args, illu_file.name)

        # create colour map
        cmap = tempfile.NamedTemporaryFile(suffix=".cpt")
        cmap.write("-15000 255     255     255  0 255     255     255\n")
        cmap.write("0 %s %s %s 10000  %s %s %s \n" % (grey, grey, grey, grey, grey, grey))
        cmap.flush()

        PyGMT.AreaXY.image(self, cvar_grd, cmap.name, args=args)
        cmap.close()