[ncl-talk] Hovmoller Plot with 2d lat/lon (Y coordinates out of data range)

David Adams dave.k.adams at gmail.com
Thu Oct 16 09:11:08 MDT 2014


Thanks Mary, Dennis,
I made a really big mistake not getting the regular gridded data from the
GOES people at Wisconsin.

Looking at the example
http://www.ncl.ucar.edu/Applications/narr.shtml
Example 6

to set the x-labels (with actual longitude values), I have to consider both
dimensions (x,y) of the longitude dimension, correct?
I would have to do something like this in the example 6

   ml = 200
    resx at tmXBValues         := toint( fspan(0,nlat-1,nLabels) )
    do i=0,nLabels-1
       x = lon2d(resx at tmXBValues(i),ml)
       y = lat2d(resx at tmXBValues(i),ml)
       resx at tmXBLabels(i) = sprintf("%5.1f", y)+"~C~"+sprintf("%5.1f", x)
    end do

where lon2d would be
   lon2d= new_lon(0,:,:)
   lat2d= new_lat(0,:,:)

(I made another mistake with ncecat and ncrcat. somehow adding a time
dimension to lat and lon)

thanks in advance,
Dave



On Wed, Oct 15, 2014 at 10:15 AM, Dennis Shea <shea at ucar.edu> wrote:

> See the following: example of subscripting 2-dimensional array coordinates
> http://www.ncl.ucar.edu/Applications/narr.shtml
> Example 6
>
> ---
> To get a 'classic' cross section (ie, a vertical profile ata  constant
> latitude or longitude), you must interpolate the curvilinear grid to to a
> rectilinear grid.
>
> http://www.ncl.ucar.edu/Applications/ESMF.shtml
> Example 30
>
> To use the weight file generated by Example 30,
>
> http://www.ncl.ucar.edu/Applications/narr.shtml
> Example 5
>
> This shows classic cross sections (constant lat ot lon) AND
> an arbitrary slice
>
> Good luck
>
>
> On Wed, Oct 15, 2014 at 9:02 AM, Mary Haley <haley at ucar.edu> wrote:
>
>> Dave,
>>
>> I think the issue here is simply that "new_temp" is dimensioned time x
>> lat x lon, and since you want a time x lon plot, you need to subscript the
>> "lat" dimension somehow.
>>
>> i.e.
>>
>>   plot = gsn_csm_contour(wks,new_temp(:,0,:), res)
>>
>> I'm just selecting the first latitude dimension, but you need to set this
>> to whatever you want.
>>
>> --Mary
>>
>> On Tue, Oct 14, 2014 at 11:41 AM, David Adams <dave.k.adams at gmail.com>
>> wrote:
>>
>>> Hi Mary et al.
>>> I think I am misunderstanding how
>>>
>>>   res at sfYArray = new_time
>>>    res at sfXArray = new_lon
>>>
>>> work.  Do I have to redefine the original variable new_temp in terms of
>>> these dimensions?  And, if so, how?
>>>
>>> I am getting this error.
>>>
>>>     gsn_csm_contour: Fatal: the input data array must be 1D or 2D
>>> fatal:Illegal right-hand side type for assignment
>>> fatal:Execute: Error occurred at or near line 74 in file
>>> lon_time_plots.ncl
>>>
>>> Here is the code.
>>> thanks in advance,
>>> Dave
>>>
>>> ;*********************************
>>> ; read variable
>>> ;*********************************
>>>    f    = addfile("/home/dadams/Mini_Campaign_NAME/2013_GOES_data/
>>> test.nc","r")
>>>    new_temp    = f->new_temp          ; float new_temp(time, yc, xc)
>>> ;   printVarSummary(new_temp)
>>> ;*********************************
>>> ;
>>> ;*********************************
>>>    new_lat  = f->new_lat
>>>    new_lon  = f->new_lon
>>>    time = f->time
>>>    new_time = conform(new_lon(:,0,:),time,0)
>>>
>>> ;*********************************
>>> ; create plot
>>> ;*********************************
>>>    pltName = "goes"
>>>    pltType = "pdf"                             ; "ps", "eps", "pdf",
>>> "png"
>>>    pltDir  = "./"
>>>
>>>    wks = gsn_open_wks(pltType, pltDir+pltName)
>>>    gsn_define_colormap(wks,"BlAqGrYeOrReVi200"); choose a color map
>>>
>>>    res                     = True
>>>    res at cnFillOn            = True            ; turn on color
>>>    res at cnFillMode          = "RasterFill"    ; cell mode
>>>    res at cnLinesOn           = False           ; Turn off contour lines
>>>
>>>    res at sfYArray = new_time
>>>    res at sfXArray = new_lon
>>>
>>>    res at gsnSpreadColors     = True            ; use full colormap
>>>    res at gsnAddCyclic        = False           ; data not cyclic
>>>    res at gsnMaximize         = True            ; ps, pdf, pdf
>>>    res at pmTickMarkDisplayMode = "Always"      ; use NCL default
>>>    res at lbLabelAutoStride   = True            ; let NCL decide spacing
>>>    res at cnLevelSelectionMode = "ManualLevels"  ;"ExplicitLevels"
>>>    res at cnMinLevelValF       = 200.                            ; set the
>>> minimum contour level
>>>    res at cnMaxLevelValF       = 300.                          ; set the
>>> maximum contour level
>>>    res at cnLevelSpacingF      = 5.0                            ; set the
>>> contour interval
>>>    res at cnRasterSmoothingOn  = True
>>>   res at lbLabelStride        = 5.0             ; every other label bar
>>> label
>>>
>>>   plot = gsn_csm_contour(wks,new_temp, res)
>>>
>>> On Mon, Oct 13, 2014 at 11:29 PM, Mary Haley <haley at ucar.edu> wrote:
>>>
>>>> Dave,
>>>>
>>>> The gsn_csm_hov script is meant to only be for rectilinear grids, and
>>>> you are trying to use it on a curvilinear grid (i.e., one represented by 2D
>>>> lat/lon grids). The documentation is not clear about this unfortunately.
>>>>
>>>> My suggestion is to just use gsn_csm_contour, and pass in the time and
>>>> longitude arrays via the sfYArray and sfXArray resources:
>>>>
>>>> new_time = conform(new_lon(:,0,:),time,0)
>>>> res at sfYArray = new_time
>>>> res at sfXArray = new_lon
>>>>
>>>> --Mary
>>>>
>>>>
>>>> On Thu, Oct 9, 2014 at 8:28 PM, David Adams <dave.k.adams at gmail.com>
>>>> wrote:
>>>>
>>>>> HI NCLers,
>>>>> I am trying to make a hovmoller plot but it does appear that my
>>>>> coordinates are correct.
>>>>>
>>>>> warning:ContourPlotInitialize: Y coordinates out of data range:
>>>>> defaulting
>>>>> warning:ContourPlotInitialize: Zero Y coordinate span:
>>>>> defaulting:[errno=1104]
>>>>>
>>>>> and then a blank plot.  The code is from the NCL website with slight
>>>>> modification
>>>>>
>>>>>
>>>>> --------------------------------------------------------------------------------
>>>>> begin
>>>>> ;=============================================
>>>>> ; data processing
>>>>> ;===========================================
>>>>>  fili  = "test.nc"                 ; filename
>>>>>   f     = addfile (fili , "r")             ; add file
>>>>>  new_temp   = f->new_temp                                ; get chi
>>>>>  new_lat  = f->new_lat
>>>>>  new_lon  = f->new_lon
>>>>> ;==============================================
>>>>> ; creat plot: Reverse time axis; contour labels horizontal
>>>>> ; Dash negative contours; double width of Zero
>>>>> ;==============================================
>>>>>  wks  = gsn_open_wks ("pdf", "hov")
>>>>>  res                     = True                ; plot mods desired
>>>>>  res at gsnContourZeroLineThicknessF = 2.         ; doubles thickness of
>>>>> zero contour
>>>>>  res at gsnContourNegLineDashPattern = 1          ; sets negative
>>>>> contours to dash pattern 1
>>>>>  res at trYReverse          = True                ; reverse y axis
>>>>>  res at tiMainString        = "Reverse Time"      ; title
>>>>>  res at cnLineLabelAngleF   = 0.0                 ; [cn] label horizontal
>>>>>
>>>>> ;new_temp at lat2d = new_lat(0,:,:)
>>>>> ;new_temp at lon2d = new_lon(0,:,:)
>>>>>
>>>>>  plot  = gsn_csm_hov(wks, new_temp(:,0,:), res )           ; default
>>>>> hovmueller
>>>>> end
>>>>>
>>>>> --------------------------------------------------------------------------------------------
>>>>> Here is an ncdump -h on the data file
>>>>>
>>>>> netcdf test {
>>>>> dimensions:
>>>>>     yc = 221 ;
>>>>>     xc = 141 ;
>>>>>     time = UNLIMITED ; // (130 currently)
>>>>> variables:
>>>>>     float new_temp(time, yc, xc) ;
>>>>>         new_temp:time = 1372896900 ;
>>>>>         new_temp:units = "K" ;
>>>>>         new_temp:coordinates = "lon lat" ;
>>>>>         new_temp:type = "GVAR" ;
>>>>>         new_temp:long_name = "Temperature" ;
>>>>>     float new_lat(time, yc, xc) ;
>>>>>         new_lat:units = "degrees_north" ;
>>>>>         new_lat:long_name = "lat" ;
>>>>>     float new_lon(time, yc, xc) ;
>>>>>         new_lon:units = "degrees_east" ;
>>>>>         new_lon:long_name = "lon" ;
>>>>>     int time(time) ;
>>>>>         time:units = "seconds since 2013-185 00:15" ;
>>>>>
>>>>>
>>>>> any obvious errors?
>>>>>
>>>>> thanks in advance,
>>>>> Dave
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> 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
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20141016/4052f9cd/attachment.html 


More information about the ncl-talk mailing list