[ncl-talk] How to change time co-ordinates from "Hours since ....." to YYYYMMDD while plotting

Dave Allured - NOAA Affiliate dave.allured at noaa.gov
Mon Jul 16 13:24:14 MDT 2018


Dilip,

The problem is that time coordinates as YYYYMMDD are too finely spaced for
the built-in plot generator.  A quick fix is to insert this line just
before the call to gsn_csm_contour:

      oxn&time = oxn&time - 20130000

There is more than one way to fix this.  For one proper solution, please
see example 4 on the Time Axis Labels example page.  This example discusses
the same problem you are having with the X coordinate.  To use this
solution, keep the original time coordinates, and do not convert them to
YYYYMMDD numbers.

     http://www.ncl.ucar.edu/Applications/time_labels.shtml

--Dave


On Mon, Jul 16, 2018 at 3:22 AM, Dilip V <dilip.v at students.iiserpune.ac.in>
wrote:

> Hello!
>
> I wanted to plot a contour map of lat v/s time for Precipitation anomaly
> over certain longitude. The time coordinates were given in "Hours since
> 1900-01-01 00:00:00". I converted them to YYYYMMDD using 'cd_calendar' and
> saved it as a new time coordinates. When i tried plotting, i got the
> following error message
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------------
> warning:IrTransInitialize: trXCoordPoints contains invalid coordinate
> array: defaulting trXAxisType to LinearAxis
> warning:_NhlCreateSplineCoordApprox: Attempt to create spline
> approximation for X axis failed: consider adjusting trXTensionF value
> warning:_NhlCreateSplineCoordApprox: Attempt to create spline
> approximation for X axis failed: consider adjusting trXTensionF value
> warning:_NhlCreateSplineCoordApprox: Attempt to create spline
> approximation for X axis failed: consider adjusting trXTensionF value
> fatal:IrTransInitialize: spline coordinate approximation not possible:
> fatal:Unable to initialize layer-Can't Create
> fatal:ContourPlotInitialize: Error creating transformation object
> fatal:ContourPlotInitialize: error setting up transformation
> fatal:Unable to initialize layer-Can't Create
> fatal:Unable to access object with id:-4
> fatal:PID #-4 can't be found in NhlSetValues
> fatal:NhlGetValues:PID #-4 is invalid
> fatal:["Execute.c":8640]:Execute: Error occurred at or near line 2222 in
> file /apps/codes/gnu/ncl_stable/lib/ncarg/nclscripts/csm/gsn_code.ncl
>
> fatal:["Execute.c":8640]:Execute: Error occurred at or near line 9571 in
> file /apps/codes/gnu/ncl_stable/lib/ncarg/nclscripts/csm/gsn_code.ncl
>
> fatal:["Execute.c":8640]:Execute: Error occurred at or near line 13393 in
> file /apps/codes/gnu/ncl_stable/lib/ncarg/nclscripts/csm/gsn_csm.ncl
>
> fatal:["Execute.c":8640]:Execute: Error occurred at or near line 224 in
> file pract8.ncl
> ------------------------------------------------------------
> ------------------------------------------------------------
> -----------------------------------------------------------------------
>
> My data includes only one year of daily precipitation data with
> specifications as below.
>
> ------------------------------------------------------------
> ----------------------------------------------------------------
> Variable: p
> Type: float
> Total Size: 52560 bytes
>             13140 values
> Number of Dimensions: 3
> Dimensions and sizes: [time | 365] x [lat | 6] x [lon | 6]
> Coordinates:
>             time: [990552..999288]
>             lat: [28.75..31.25]
>             lon: [78.25..80.75]
> Number Of Attributes: 14
>   _FillValue : -9.96921e+36
>   var_desc : Precipitation
>   valid_range : (  0, 1000 )
>   units : mm
>   statistic : Total
>   parent_stat : Other
>   missing_value : -9.96921e+36
>   long_name : Daily total of precipitation
>   level_desc : Surface
>   dataset : CPC Global Precipitation
>   cell_methods : time: sum
>   avg_period : 0000-00-01 00:00:00
>   actual_range : (  0, 473.6278 )
>   DIMENSION_LIST : -2147483647
> ------------------------------------------------------------
> ----------------------------------------------------------------------
>
> *How do i plot contour map of lat v/s time with time coordinates in
> YYYYMMDD format for a certain time period? *
>
> My code for the above is as follows:
>
> ------------------------------------------------------------
> ------------------------------------------------------------
> ---------------------------------------------------------------------
> read = 1
> if (read.ne.0) then
> f = addfile("precip_2013.nc","r")
> p = f->precip(:,{28.75:31.25},{78.25:80.75})
> pr = p(lat|:,lon|:,time|:)
> prm = dim_avg_Wrap(pr)
> prnew = new((/6,6,365/),float)
> t = f->time
> tim = cd_calendar(t,2)
>
> ;computing anomoly at all points
> do i = 0,5
>     do j = 0,5
>         do k = 0,364
>             prnew(i,j,k) = (pr(i,j,k)-prm(i,j))
>         end do
>     end do
> end do
> prnew!0 = "lat"
> prnew!1 = "lon"
> prnew!2 = "time"
> prn = prnew(time|:,lat|:,lon|:)
>
> ;applying fft over anomoly at all points
> ft = new((/2,365,6,6/),float)
> do h = 0,5
>     do k = 0,5
>         gt = cfftf(prn(:,h,k),0.0,0)
>         ft(0,:,h,k) = gt(0,:)
>         ft(1,:,h,k) = gt(1,:)
>     end do
> end do
>
> ;filtering out unwanted frequencies
> do h = 0,5
>     do k = 0,5
>         ft(0,13:352,h,k) = 0.0
>         ft(1,13:352,h,k) = 0.0
>         ft(0,360:,h,k)   = 0.0
>         ft(1,360:,h,k)   = 0.0
>         ft(0,0:5,h,k)    = 0.0
>         ft(1,0:5,h,k)    = 0.0
>     end do
> end do
>
> ;ifft of required frequencies
> ift = new((/365,6,6/),float)
> do h = 0,5
>     do k = 0,5
>         kt = cfftb(ft(:,:,h,k),1)
>         ift(:,h,k) = kt(:)
>     end do
> end do
> ift!0 = "time"
> ift!1 = "lat"
> ift!2 = "lon"
> iftnew = ift(lat|:,lon|:,time|:)
>
>
> copy_VarAtts(pr,iftnew)
> copy_VarCoords(pr,iftnew)
> oxn = iftnew(lon|:,lat|:,time|:)
> oxn at long_name = "30-60 day anomoly of precipitation"
> oxn&time = tim
> wks  = gsn_open_wks ("png", "lat_time" )           ; send graphics to PNG
> file
>
>   res                      = True               ; plot mods desired
>   res at cnFillOn             = True  ; turn on color fill
>   res at cnFillPalette        = "BlWhRe"           ; set color map
>   res at cnLinesOn            = False
>   res at tiMainString         = "Uttarkhand at 79.25E"   ; title
>   res at tiYAxisString        = "Latitude"
>   res at cnLevelSelectionMode = "AutomaticLevels"     ; manual contour levels
>   res at lbOrientation        = "Vertical"
>
>   plot = gsn_csm_contour(wks, oxn({79.25},:,160:170), res)
>
> end if
> ------------------------------------------------------------
> ------------------------------------------------------------
> ------------------------------------------------------------
> ----------------------
> *By,*
> *Dilip.V*
> *Master's Student,*
> *Indian Institute of Science Education and Research,*
> *Pune, India*
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20180716/3e7a845a/attachment.html>


More information about the ncl-talk mailing list