Re: possible problem in panel_23.ncl example ...

From: Rick Brownrigg <brownrig_at_nyahnyahspammersnyahnyah>
Date: Wed Mar 30 2011 - 10:30:10 MDT

Hi Ufuk,

This really does seem like a bug; after inspecting your script, I put together a minimal script that exhibits the same problem. I will consult with one of my colleagues here and most likely file a bug report.

As a possible work-around, you might take a look at the panel_25 example; it creates a paneled plot using gsn_csm_contour_map(), and has only a singular labelbar. The key to that example is the last dozen+ lines beginning with "create panel". The example uses gsn_panel() to group the plots. In your instance, you'd want to comment out your call to labelbar(), and to achieve the affects of example panel_23, you'd probably want to set gsnPanel[X|Y]WhiteSpacePercent = 0, and of course set the grouping as (/ 4,4 /) rather than the (/ 1, nplots /) in the example.

I can't guarantee this will work, but it looks like it would be straightforward to copy those lines into (a copy of) your script, trim out the parts that don't apply to your case, and give it a shot.

Hope that helps...
Rick

On Mar 30, 2011, at 3:10 AM, u.utku.turuncoglu@be.itu.edu.tr wrote:

> Hi,
>
> Thanks for your help. You can find the script as follows,
>
> ---
> ;-----------------------------------------------------------
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
> ;-----------------------------------------------------------
> ;-----------------------------------------------------------
> ; Functions
> ;-----------------------------------------------------------
> function labelbar(wks, plot)
> local colors, levels, labels, nboxes
> begin
>
> ;--- retrieve the contour levels and their associated colors ---
> getvalues plot
> "cnLevels" : levels
> "cnFillColors" : colors
> end getvalues
>
> nboxes = dimsizes(colors)
>
> labels = ""+levels ; labels for the labelbar
>
> ;--- set some labelbar resources ---
> lbres = True
> lbres@vpXF = 0.15 ; Position labelbar at
> lbres@vpYF = 0.08 ; bottom center of frame.
> lbres@vpWidthF = 0.70
> lbres@vpHeightF = 0.10
>
> lbres@lbPerimOn = False ; Turn off perimeter.
> lbres@lbOrientation = "Horizontal" ; Default is vertical.
> lbres@lbFillColors = colors
> lbres@lbMonoFillPattern = True ; Fill them all solid.
> lbres@lbLabelFontHeightF = 0.013 ; Label font height
> lbres@lbLabelAlignment = "InteriorEdges"
>
> lbid = gsn_create_labelbar(wks,nboxes,labels,lbres)
>
> draw(lbid)
> return(lbid)
> end
> ;-----------------------------------------------------------
> begin
> ;--- read input files ---
> nc_obs = addfile("./input.nc", "r")
> nc_lake = addfile("./cas_lake.nc", "r")
> nc_nolake = addfile("./cas_nolake.nc", "r")
> nc_ssc = addfile("./cas_ssc.nc", "r")
>
> ;--- read rcm grid ---
> domain = addfile("./grid.nc", "r")
> lsmask = domain->mask
> xlat = domain->xlat
> xlon = domain->xlon
>
> ;--- read data ---
> lswt = short2flt(nc_obs->lswt)
> lat = nc_obs->lat
> lon = nc_obs->lon
>
> tg_lake = nc_lake->tg
> tg_lake!0 = "lat"
> tg_lake!1 = "lon"
> tg_lake@lat2d = xlat
> tg_lake@lon2d = xlon
>
> tg_nolake = nc_nolake->tg
> tg_nolake!0 = "lat"
> tg_nolake!1 = "lon"
> tg_nolake@lat2d = xlat
> tg_nolake@lon2d = xlon
>
> tg_ssc = nc_ssc->tg
> tg_ssc!0 = "lat"
> tg_ssc!1 = "lon"
> tg_ssc@lat2d = xlat
> tg_ssc@lon2d = xlon
>
> ;--- create plot workspace ---
> wks = gsn_open_wks ("pdf", "plot_vs")
> gsn_define_colormap (wks, "amwg_blueyellowred")
> i = NhlNewColor(wks, 0.8, 0.8, 0.8)
>
> ;--- define plor resource ---
> res = True
> res@gsnAddCyclic = False
> res@gsnFrame = False
> res@gsnLeftString = ""
> ;res@gsnMaximize = True
> res@gsnRightString = ""
> res@gsnSpreadColors = True
> res@gsnSpreadColorEnd = -3
> res@cnFillOn = True
> res@cnFillMode = "RasterFill"
> res@cnInfoLabelOn = False
> res@cnLinesOn = False
> res@cnLineLabelsOn = False
> res@lbLabelBarOn = False
> res@pmTickMarkDisplayMode = "Always"
> res@tiXAxisFontHeightF = 0.008
> res@tiYAxisFontHeightF = 0.008
> res@tmXBLabelFontHeightF = 0.008
> res@tmYLLabelFontHeightF = 0.008
> res@vpWidthF = 0.2
> res@vpHeightF = 0.2
>
> res@cnLevelSelectionMode = "ManualLevels"
> res@cnMinLevelValF = floor(min(lswt))-2
> res@cnMaxLevelValF = ceil(max(lswt))+2
> res@cnLevelSpacingF = 2
>
> ;--- mapping properties ---
> res@mpDataBaseVersion = "HighRes"
> res@mpProjection = "LambertConformal"
> res@mpOutlineDrawOrder = "PostDraw"
> res@mpGridAndLimbOn = False
> res@mpLambertParallel1F = 30
> res@mpLambertParallel2F = 60
>
> res@mpLimitMode = "Corners"
> res@mpLeftCornerLatF = min(lat)
> res@mpLeftCornerLonF = min(lon)
> res@mpRightCornerLatF = max(lat)
> res@mpRightCornerLonF = max(lon)
> res@mpLambertMeridianF = 51.0
>
> ;--- positions for plots ---
> xpos = (/0.1,0.218,0.336,0.454/)
> ypos = (/0.9,0.7,0.5,0.3/)
>
> nplots = 16
> months = (/ "DJF", "MAM", "JJA", "SON" /)
> plot = new(nplots, graphic)
>
> do i = 0, nplots-1
> ii = i%4
>
> if (ii .eq. 0) then
> mm = months(i/4)
> end if
> print(i+" "+mm)
>
> ;--- top four plots ---
> if(any(i.eq.(/0, 1, 2, 3/))) then
> res@vpYF = ypos(0)
> res@vpXF = xpos(i)
> res@tmXTOn = False
> res@tmXTLabelsOn = False
> else
> res@tmXTOn = False
> res@tmXTLabelsOn = False
> end if
>
> ;--- bottom four plots ---
> if(any(i.eq.(/12, 13, 14, 15/))) then
> res@vpYF = ypos(3)
> res@vpXF = xpos(i-12)
> res@tmXBOn = True
> res@tmXBLabelsOn = True
> res@tiXAxisString = "Longitude"
> else
> res@tmXBOn = False
> res@tmXBLabelsOn = False
> res@tmYLOn = False
> res@tmYLLabelsOn = False
> res@tiXAxisString = ""
> end if
>
> ;--- rightmost four plots ---
> if(any(i.eq.(/0, 4, 8, 12/))) then
> res@vpYF = ypos(i/4)
> res@vpXF = xpos(0)
> res@tmYLOn = True
> res@tmYLLabelsOn = True
> res@tiYAxisString = "Latitude"
> else
> res@tmYLOn = False
> res@tmYLLabelsOn = False
> res@tiYAxisString = ""
> end if
>
> ;--- leftmost four plots ---
> if(any(i.eq.(/3, 7, 11, 15/))) then
> res@vpYF = ypos(i/4)
> res@vpXF = xpos(3)
> res@tmYROn = False
> res@tmYRLabelsOn = False
> else
> res@tmYROn = False
> res@tmYRLabelsOn = False
> end if
>
> if(any(i.eq.(/5, 6, 9, 10/))) then
> res@vpYF = ypos(i/4)
> res@vpXF = xpos(i%4)
> res@tmXBOn = False
> res@tmXBLabelsOn = False
> res@tmXTOn = False
> res@tmXTLabelsOn = False
> res@tmYROn = False
> res@tmYRLabelsOn = False
> res@tmYLOn = False
> res@tmYLLabelsOn = False
> end if
>
> if (any(i.eq.(/0, 4, 8, 12/))) then
> var_obs = month_to_season(lswt, mm)
> plot(i) = gsn_csm_contour_map(wks, var_obs(0,:,:), res)
> delete(var_obs)
> end if
>
> if (any(i.eq.(/1, 5, 9, 13/))) then
> tmp = month_to_season(tg_lake, mm)
> var_lake = tmp
> var_lake = mask(tmp, lsmask, 0)
> plot(i) = gsn_csm_contour_map(wks, var_lake(0,:,:), res)
> delete(var_lake)
> end if
>
> if (any(i.eq.(/2, 6, 10, 14/))) then
> tmp = month_to_season(tg_nolake, mm)
> var_nolake = tmp
> var_nolake = mask(tmp, lsmask, 0)
> plot(i) = gsn_csm_contour_map(wks, var_nolake(0,:,:), res)
> delete(var_nolake)
> end if
>
> if (any(i.eq.(/3, 7, 11, 15/))) then
> tmp = month_to_season(tg_ssc, mm)
> var_ssc = tmp
> var_ssc = mask(tmp, lsmask, 0)
>
> plot(i) = gsn_csm_contour_map(wks, var_ssc(0,:,:), res)
> delete(var_ssc)
> end if
> end do
>
> ;--- add label bar ---
> lb = labelbar(wks, plot(0))
>
> ;--- add title ---
> txres = True
> txres@gsnFrame = False
> txres@txFontHeightF = 0.008
> txres@txFont = "Helvetica-bold"
>
> title = (/ "OBS", "LAKE", "NOLAKE", "SSC" /)
> do i = 0, 3
> txres@txPosXF = xpos(i)+0.1
> txres@txPosYF = ypos(0)+0.01
> txid = gsn_create_text(wks, title(i), txres)
> draw(txid)
> end do
>
> txres@txAngleF = 90
>
> do i = 0, 3
> txres@txPosXF = xpos(3)+0.17
> txres@txPosYF = ypos(i)-0.1
> txid = gsn_create_text(wks, months(i), txres)
> draw(txid)
> end do
>
> frame(wks)
>
> ;--- maximize plot ---
> ;psres = True
> ;maximize_output(wks, psres)
> end
> -----
>
>> Hard to say offhand. Do you want to post your script?
>>
>>
>> On Mar 29, 2011, at 9:39 AM, u.utku.turuncoglu@be.itu.edu.tr wrote:
>>
>>> Hi,
>>>
>>> I try to plot that is similar to following link,
>>>
>>> http://www.ncl.ucar.edu/Applications/Scripts/panel_23.ncl
>>>
>>> but in my case i am using gsn_csm_contour_map instead of
>>> gsn_csm_contour.
>>> The code gives following error in labelbar function.
>>>
>>> warning:cnFillColors is not a valid resource in map at this time
>>> warning:NhlGetValues:Error retrieving cnFillColors
>>> fatal:Execute: Error occurred at or near line 16 in file plot_vs.ncl
>>>
>>> fatal:Execute: Error occurred at or near line 239 in file plot_vs.ncl
>>>
>>> How can i solve it? I think that gsn_csm_contour_map causes this error
>>> because when i change it to gsn_csm_contour, it works without error.
>>>
>>> Thanks,
>>>
>>> --ufuk
>>>
>>>
>>> --
>>> This message has been scanned for viruses and
>>> dangerous content by MailScanner, and is
>>> believed to be clean.
>>>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>
>>
>> --
>> This message has been scanned for viruses and
>> dangerous content by MailScanner, and is
>> believed to be clean.
>>
>
>
>
> --
> This message has been scanned for viruses and
> dangerous content by MailScanner, and is
> believed to be clean.
>

_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Wed Mar 30 10:30:17 2011

This archive was generated by hypermail 2.1.8 : Tue Apr 05 2011 - 09:01:21 MDT