Re: give tick marks on a longitude-time plot

From: Yi-Chih Huang <dscpln_at_nyahnyahspammersnyahnyah>
Date: Fri Nov 08 2013 - 16:04:41 MST

Mary,

    The result is as follows. I corrected the errors in my script as the
second block below. It is yStrt = (/"1981/","1985/","1996/"/), rather than
yStrt = (/"1982/","1986/","1997/"/), that give the periods 1982-83,
1986-87, and 1997-98. Do you know what the problem is in the script?

    Thanks much,

           Yi-Chih

#######
yhuang@arc-env:/fs3/yhuang/scripts$ ncl test.ncl
 Copyright (C) 1995-2013 - All Rights Reserved
 University Corporation for Atmospheric Research
 NCAR Command Language Version 6.1.2
 The use of this software is governed by a License Agreement.
 See http://www.ncl.ucar.edu/ for more details.
(0) ==================================================
(0) Year range = 1981 to 1983
(0) Found 36 values in this range:
(0) 1981
(1) 1981
(2) 1981
(3) 1981
(4) 1981
(5) 1981
(6) 1981
(7) 1981
(8) 1981
(9) 1981
(10) 1981
(11) 1981
(12) 1982
(13) 1982
(14) 1982
(15) 1982
(16) 1982
(17) 1982
(18) 1982
(19) 1982
(20) 1982
(21) 1982
(22) 1982
(23) 1982
(24) 1983
(25) 1983
(26) 1983
(27) 1983
(28) 1983
(29) 1983
(30) 1983
(31) 1983
(32) 1983
(33) 1983
(34) 1983
(35) 1983
(0) ==================================================
(0) Year range = 1985 to 1987
(0) Found 36 values in this range:
(0) 1985
(1) 1985
(2) 1985
(3) 1985
(4) 1985
(5) 1985
(6) 1985
(7) 1985
(8) 1985
(9) 1985
(10) 1985
(11) 1985
(12) 1986
(13) 1986
(14) 1986
(15) 1986
(16) 1986
(17) 1986
(18) 1986
(19) 1986
(20) 1986
(21) 1986
(22) 1986
(23) 1986
(24) 1987
(25) 1987
(26) 1987
(27) 1987
(28) 1987
(29) 1987
(30) 1987
(31) 1987
(32) 1987
(33) 1987
(34) 1987
(35) 1987
(0) ==================================================
(0) Year range = 1996 to 1998
(0) Found 36 values in this range:
(0) 1996
(1) 1996
(2) 1996
(3) 1996
(4) 1996
(5) 1996
(6) 1996
(7) 1996
(8) 1996
(9) 1996
(10) 1996
(11) 1996
(12) 1997
(13) 1997
(14) 1997
(15) 1997
(16) 1997
(17) 1997
(18) 1997
(19) 1997
(20) 1997
(21) 1997
(22) 1997
(23) 1997
(24) 1998
(25) 1998
(26) 1998
(27) 1998
(28) 1998
(29) 1998
(30) 1998
(31) 1998
(32) 1998
(33) 1998
(34) 1998
(35) 1998
###############
load "$SysE/lib/ncl/helper_libs.ncl"

begin
  latS = -5.0
  latN = 5.0
  lonE = 120.0
  lonW = 280.0

  yrStrt = 1979
  yrLast = 2009

  in = addfile("/fs3/yhuang/precip.mon.mean.nc","r") ; 197901-201306
  YMDHMS = cd_calendar(in->time, 0) ; all times
                                              ; index for desired time
  iYear = ind(YMDHMS(:,0).ge.yrStrt .and. YMDHMS(:,0).le.yrLast)
                                              ; read time and region
  precip = in->precip(iYear,{latS:latN},{lonE:lonW})
  pcpClm = clmMonTLL( precip )

  xt= precip(0:23,{latS:latN},{lonE:lonW})
  ds= dimsizes(xt)
  nyr= yrLast -yrStrt +1
  pcpm= new((/ds(0),ds(2)/),float)

  yyyymmM = cd_calendar(precip&time,-1) ; verify times are correct

  dimp = dimsizes(precip)
  ntim = dimp(0)
  nlat = dimp(1)
  mlon = dimp(2)

  pcpt = dim_avg_n_Wrap( pcpClm,1 ) ; (time,lat)
  do nm= 0,11
    pcpm(nm,:) = pcpt(nm,:)
    pcpm(nm+12,:)= pcpt(nm,:)
  end do

  yStrt = (/"1981/","1985/","1996/"/)
  yLast = (/"1983/","1987/","1998/"/)
  nyrs= dimsizes(yStrt)

  in= addfile("/fs3/yhuang/precip.mon.mean.nc","r") ; 197901-201306
  prec= in->precip
  xt= prec(0:23,{latS:latN},{lonE:lonW})
  ds= dimsizes(xt)
  pcps= new((/nyrs,ds(0),ds(2)/),float)

  do ny= 0,nyrs-1 ; precipitation in ENSO years
    iYr = ind(YMDHMS(:,0).ge.yStrt(ny) .and. YMDHMS(:,0).le.yLast(ny))
                                              ; read time and region
    preci = in->precip(iYr,{latS:latN},{lonE:lonW})

    yyyymmE = cd_calendar(preci&time,-1) ; verify times are correct

    dimp = dimsizes(preci)
    ntim = dimp(0)
    nlat = dimp(1)
    mlon = dimp(2)

    pcps(ny,:,:)= dim_avg_n_Wrap( preci,1 ) ; (time,lat)
  end do

  pcps!0= "year"
  pcpE= dim_avg_n_Wrap( pcps, 0 )
  dpcp= pcpE - pcpm
  copy_VarCoords(pcpE,dpcp)
printVarSummary(dpcp)

  wks= gsn_open_wks("X11","pcpa")
  gsn_define_colormap(wks,"BlueRed")

  res = True
  res@gsnAddCyclic = False

  res@cnFillOn = True
  res@cnLinesOn = False ; turn off the contour
lines
  res@cnLineLabelsOn = False
  res@cnSpanFillPalette = True

  res@gsnSpreadColors = True ; use full colormap
  res@gsnSpreadColorStart = 10 ; for BlueRed
  res@gsnSpreadColorEnd = 250 ; for BlueRed

  yr= ispan(1,ntim,1)
  yr@long_name = "months"
  delete(dpcp&time)
  dpcp&time = yr
  plot = gsn_csm_hov(wks,dpcp,res)
end

On Sat, Nov 9, 2013 at 3:18 AM, Mary Haley <haley@ucar.edu> wrote:

>
> On Nov 7, 2013, at 4:08 PM, Yi-Chih Huang <dscpln@gmail.com> wrote:
>
> > Mary,
> >
> > Because year is the name of directories in my current working
> environment, "/" and string setting are necessary to work on directory in
> the script as follows.
> >
> > dir1= "/fs3/SysE_DB/saji/OISST/Monthly/Mean/"
> > dir2=
> (/"1981/","1982/","1983/","1984/","1985/","1986/","1987/","1988/","1989/",\
> >
> "1990/","1991/","1992/","1993/","1994/","1995/","1996/","1997/","1998/","1999/","2000/",\
> >
> "2001/","2002/","2003/","2004/","2005/","2006/","2007/","2008/"/)
> > dir = str_concat(dir1+dir2(0))
> >
> > As for the ind statement below, I don't understand why it is "yStrt
> = (/"1981/","1985/","1996/"/)", rather than "yStrt =
> (/"1982/","1986/","1997/"/)" to select the year 1982-83, 1986-87, and
> 1997-98. What do you think of this?
>
> I'm not sure what to think, because I don't know what your YMDHMS(:,0)
> array looks like.
>
> I tried running your script below, but it has all kinds of errors due to
> incorrect types and missing metadata.
>
> It's best to start with the simple problem of why your "iYr" values are
> not coming out as expected. Please run this code and let me know if you get
> the "iYr" that you expect:
>
> in = addfile("precip.mon.mean.nc","r")
> YMDHMS = cd_calendar(in->time, 0)
>
> yStrt = (/1981,1985,1996/)
> yLast = (/1983,1987,1998/)
> nyrs= dimsizes(yStrt)
>
> do ny= 0,nyrs-1
> iYr = ind(YMDHMS(:,0).ge.yStrt(ny) .and. YMDHMS(:,0).le.yLast(ny))
> print("==================================================")
> print("Year range = " + yStrt(ny) + " to " + yLast(ny))
> print("Found " + dimsizes(iYr) + " values in this range:")
> print(" " + YMDHMS(iYr,0))
> end do
>
>
>
> --Mary
>
> >
> > yStrt = (/"1981/","1985/","1996/"/)
> > yLast = (/"1983/","1987/","1998/"/)
> > iYr = ind(YMDHMS(:,0).ge.yStrt(ny) .and. YMDHMS(:,0).le.yLast(ny))
> >
> > Thanks much,
> >
> > Yi-Chih
> >
> >
> >
> > On Fri, Nov 8, 2013 at 12:17 AM, Mary Haley <haley@ucar.edu> wrote:
> > Yi-Chih,
> >
> > These two lines really don't make sense:
> >
> > > yStrt = (/"1981/","1985/","1996/"/)
> > > yLast = (/"1983/","1987/","1998/"/)
> >
> > Why do you have these as strings and not integers? Also, why do you have
> the extra "/" after the year values?
> >
> > I think these two lines should be integers, because they eventually are
> being compared against float values, not string values.
> >
> > > yStrt = (/1981,1985,1996/)
> > > yLast = (/1983,1987,1998/)
> >
> > --Mary
> >
> >
> > On Nov 6, 2013, at 6:43 PM, Yi-Chih Huang <dscpln@gmail.com> wrote:
> >
> > > Mary,
> > >
> > > I used pcps!0= "year" to remove the warning. Besides, I want to
> choose 1982-83, 1986-87, and 1997-98. At first I believed the command
> yStrt = (/"1982/","1986/","1997/"/) would have chosen the years 1982-83,
> 1986-87, and 1997-98. However, it is yStrt = (/"1981/","1985/","1996/"/)
> which was working. Could you explain why yStrt =
> (/"1982/","1986/","1997/"/) only chose the year 1983?
> > >
> > > yStrt = (/"1981/","1985/","1996/"/)
> > > yLast = (/"1983/","1987/","1998/"/)
> > > iYr = ind(YMDHMS(:,0).ge.yStrt(ny) .and. YMDHMS(:,0).le.yLast(ny))
> > >
> > > Thanks much,
> > >
> > > Yi-Chih
> > >
> > >
> > > On Thu, Nov 7, 2013 at 2:32 AM, Mary Haley <haley@ucar.edu> wrote:
> > > You are getting these warnings because you are using a _Wrap function
> on "pcps", which has no metadata.
> > >
> > > The _Wrap functions are supposed to be used when you have metadata
> that you want to retain.
> > >
> > > I believe when you do something like this:
> > >
> > > > pcps(ny,:,:)= dim_avg_n_Wrap( preci,1 ) ; (time,lat)
> > >
> > > since the variable "pcps" already exists, and since you are using it
> in a subscripting fashion, NCL will not copy over any metadata.
> > >
> > > The warning is probably harmless, but you can also just use
> "dim_avg_n", and then use copy_VarMeta to copy metadata to pcps later.
> > >
> > > --Mary
> > >
> > > On Nov 5, 2013, at 1:01 AM, Yi-Chih Huang <dscpln@gmail.com> wrote:
> > >
> > > > Hello,
> > > >
> > > > I modified Dennis' script to calculate anomies. I don't
> understand why there is "Coordinate variables" problem, especially I copy
> variable coordinate to the variable in the Hovmoller diagram and didn't
> change the commands about time axis. In addition, I executed
> "dimsizes(pcps)". Why does the warning "warning:Dimension (0) has not been
> defined" still show up?
> > > >
> > > > Thanks,
> > > >
> > > > Yi-Chih
> > > >
> > > > ########
> > > > yhuang@arc-env:/fs3/yhuang/scripts$ ncl pcpSstTime.ncl
> > > > Copyright (C) 1995-2013 - All Rights Reserved
> > > > University Corporation for Atmospheric Research
> > > > NCAR Command Language Version 6.1.2
> > > > The use of this software is governed by a License Agreement.
> > > > See http://www.ncl.ucar.edu/ for more details.
> > > > (0) a
> > > > warning:Dimension (0) has not been defined
> > > > (0) b
> > > > fatal:Coordinate variables must be the same dimension as their
> dimension
> > > > fatal:No coordinate variable exists for dimension (time) in variable
> (dpcp)
> > > > fatal:["Execute.c":8128]:Execute: Error occurred at or near line 89
> in file pcpSstTime.ncl
> > > >
> > > > ###
> > > > load "$SysE/lib/ncl/helper_libs.ncl"
> > > >
> > > > begin
> > > > latS = -5.0
> > > > latN = 5.0
> > > > lonE = 120.0
> > > > lonW = 280.0
> > > >
> > > > yrStrt = 1979
> > > > yrLast = 2009
> > > >
> > > > in = addfile("/fs3/yhuang/precip.mon.mean.nc","r") ;
> 197901-201306
> > > > YMDHMS = cd_calendar(in->time, 0) ; all times
> > > > ; index for desired
> time
> > > > iYear = ind(YMDHMS(:,0).ge.yrStrt .and. YMDHMS(:,0).le.yrLast)
> > > > ; read time and region
> > > > precip = in->precip(iYear,{latS:latN},{lonE:lonW})
> > > > pcpClm = clmMonTLL( precip )
> > > >
> > > > xt= precip(0:23,{latS:latN},{lonE:lonW})
> > > > ds= dimsizes(xt)
> > > > nyr= yrLast -yrStrt +1
> > > > pcpm= new((/ds(0),ds(2)/),float)
> > > >
> > > > yyyymmM = cd_calendar(precip&time,-1) ; verify times are
> correct
> > > >
> > > > dimp = dimsizes(precip)
> > > > ntim = dimp(0)
> > > > nlat = dimp(1)
> > > > mlon = dimp(2)
> > > >
> > > > pcpt = dim_avg_n_Wrap( pcpClm,1 ) ; (time,lat)
> > > > do nm= 0,11
> > > > pcpm(nm,:) = pcpt(nm,:)
> > > > pcpm(nm+12,:)= pcpt(nm,:)
> > > > end do
> > > >
> > > > yStrt = (/"1981/","1985/","1996/"/)
> > > > yLast = (/"1983/","1987/","1998/"/)
> > > > nyrs= dimsizes(yStrt)
> > > >
> > > > in= addfile("/fs3/yhuang/precip.mon.mean.nc","r") ; 197901-201306
> > > > prec= in->precip
> > > > xt= prec(0:23,{latS:latN},{lonE:lonW})
> > > > ds= dimsizes(xt)
> > > > pcps= new((/nyrs,ds(0),ds(2)/),float)
> > > >
> > > > do ny= 0,nyrs-1 ; precipitation in ENSO years
> > > > iYr = ind(YMDHMS(:,0).ge.yStrt(ny) .and.
> YMDHMS(:,0).le.yLast(ny))
> > > > ; read time and region
> > > > preci = in->precip(iYr,{latS:latN},{lonE:lonW})
> > > >
> > > > yyyymmE = cd_calendar(preci&time,-1) ; verify times are
> correct
> > > >
> > > > dimp = dimsizes(preci)
> > > > ntim = dimp(0)
> > > > nlat = dimp(1)
> > > > mlon = dimp(2)
> > > >
> > > > pcps(ny,:,:)= dim_avg_n_Wrap( preci,1 ) ; (time,lat)
> > > > end do
> > > >
> > > > dimp = dimsizes(pcps)
> > > > ntim = dimp(0)
> > > > print("a")
> > > > pcpE= dim_avg_n_Wrap( pcps, 0 )
> > > > print("b")
> > > > dpcp= pcpE - pcpm
> > > > copy_VarCoords(pcpE,dpcp)
> > > >
> > > > wks= gsn_open_wks("X11","pcpa")
> > > > gsn_define_colormap(wks,"BlueRed")
> > > >
> > > > res = True
> > > > res@gsnAddCyclic = False
> > > >
> > > > res@cnFillOn = True
> > > > res@cnLinesOn = False ; turn off the
> contour lines
> > > > res@cnLineLabelsOn = False
> > > > res@cnSpanFillPalette = True
> > > >
> > > > res@gsnSpreadColors = True ; use full
> colormap
> > > > res@gsnSpreadColorStart = 10 ; for BlueRed
> > > > res@gsnSpreadColorEnd = 250 ; for BlueRed
> > > >
> > > > yr= ispan(1,ntim,1)
> > > > yr@long_name = "months"
> > > > delete(dpcp&time)
> > > > dpcp&time = yr
> > > > plot = gsn_csm_hov(wks,dpcp,res)
> > > > end
> > > > _______________________________________________
> > > > ncl-talk mailing list
> > > > List instructions, subscriber options, unsubscribe:
> > > > http://mailman.ucar.edu/mailman/listinfo/ncl-talk
> > >
> > >
> > > _______________________________________________
> > > ncl-talk mailing list
> > > List instructions, subscriber options, unsubscribe:
> > > http://mailman.ucar.edu/mailman/listinfo/ncl-talk
> >
> >
> > _______________________________________________
> > ncl-talk mailing list
> > List instructions, subscriber options, unsubscribe:
> > http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
>

_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Fri Nov 8 16:05:02 2013

This archive was generated by hypermail 2.1.8 : Mon Nov 11 2013 - 09:45:33 MST