[ncl-talk] Panel different sizes plots to equal height

Tabish Ansari tabishumaransari at gmail.com
Mon May 14 18:48:29 MDT 2018


Hi

I tried to forego the gsn_panel and specify the vp resources instead but
both the plots get drawn on top of each other in full size.
Also, when I try to comment out the line:
pltres at PanelPlot = True

I do not get the station points correctly mapped onto the contour maps.

Should I use "pltres at PanelPlot = True" even when not using gsn_panel?

Should I use the vp resources with res (which go into wrf_contour function)
or with pltres (which go into wrf_map_overlays function)?
I have tried using both but nothing happens.


Please let me know how can I place the plots side by side.



Tabish U Ansari
PhD student, Lancaster Environment Center
Lancaster Univeristy
Bailrigg, Lancaster,
LA1 4YW, United Kingdom

On 14 May 2018 at 20:09, Adam Phillips <asphilli at ucar.edu> wrote:

> Hi Tabish,
> It might be easiest to forego using gsn_panel, and panel the two plots
> manually as is shown in panel example #20 here:
> http://www.ncl.ucar.edu/Applications/panel.shtml#ex20
>
> As you are currently drawing a labelbar using gsn_panel, you will want to
> do this by setting the appropriate resources in the individual resource
> list cnres:
> cnres at lbLabelBarOn = True
> cnres at pmLabelBarHeightF = 0.1
> cnres at pmLabelBarWidhtF = 0.8
> cnres at lbLabelFontHeightF = 0.020
> cnres at pmLabelBarParallelPosF = -0.25    ; This resource shifts the
> labelbar left or right, so you can center the labelbar on the page. You
> will likely have to go through some trial and error on this setting.
>
> Alternatively, you can draw your own labelbar by calling gsn_labelbar_ndc.
> See maps only example #6 here:
> http://www.ncl.ucar.edu/Applications/maponly.shtml#ex6
>
> Hope that helps. If you have further questions please respond to the
> ncl-talk email list.
> Adam
>
>
>
> On Mon, May 14, 2018 at 11:46 AM, Tabish Ansari <
> tabishumaransari at gmail.com> wrote:
>
>> Hi Adam,
>>
>> Thanks for your reply.
>> The eps figure from the current script is attached.
>> I just want to shrink the second figure or expand the first figure to
>> make them both same in height without changing the aspect ratio.
>>
>> Thanks
>>
>> Tabish
>>
>> Tabish U Ansari
>> PhD student, Lancaster Environment Center
>> Lancaster Univeristy
>> Bailrigg, Lancaster,
>> LA1 4YW, United Kingdom
>>
>> On 14 May 2018 at 16:25, Adam Phillips <asphilli at ucar.edu> wrote:
>>
>>> Hi Tabish,
>>> It would help the community answer your question if you could attach an
>>> image showing your plot.
>>> Thanks,
>>> Adam
>>>
>>> On Sun, May 13, 2018 at 4:03 PM, Tabish Ansari <
>>> tabishumaransari at gmail.com> wrote:
>>>
>>>> Hi
>>>>
>>>> I am trying to panel my WRF domains: domain1 and domain3 which have
>>>> very different aspect ratios and sizes. Currently using the following
>>>> script I'm able to panel them together but not change their size. I tried
>>>> using vp resources but without success. Can you please let me know what
>>>> changes I make to this script to make the D03 same in height as D01 without
>>>> changing aspect ratios?
>>>>
>>>> Here's the script:
>>>> ; PANELPLOT OF WRF-CHEM D01 AND D03 PM2.5 CONCENTRATIONS CONTOUR MAPS
>>>> ALONG WITH OBSERVATIONS
>>>> 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/wrf/WRFUserARW.ncl"
>>>>
>>>> ;----------------------------------------------------------------------
>>>> ; Procedure to attach colored markers to an NCL map, given 1D
>>>> ; data, and lat/lon arrays, a set of levels, and a color map.
>>>> ;----------------------------------------------------------------------
>>>> procedure add_obs_markers_to_map(wks,plot,levels,colormap,data_1d,lat_
>>>> 1d,lon_1d)
>>>> local mkres, nlevels, colors, nlevels, n, ii
>>>> begin
>>>>
>>>> ;---Set resources for the markers
>>>>   mkres = True
>>>>   mkres at gsMarkerIndex = 16
>>>>   mkres at gsMarkerSizeF = 0.0035
>>>> ; Based on the levels we had for the contour plot and the colormap used,
>>>> ; get an array of colors that span the colormap. This uses the same
>>>> ; algorithm that the contour used, so the colors will be identical.
>>>> ;
>>>>   nlevels = dimsizes(levels)
>>>>   colors = span_color_rgba(colormap,nlevels+1)   ; Need one more color
>>>> than number of levels
>>>>
>>>> ;
>>>> ; Loop through each level, gather all the data values in the given level
>>>> ; range, and add colored markers to the existing map.
>>>> ;
>>>>   do n=0,nlevels
>>>>
>>>> ;---These "if" statements are how color contours are handled in NCL.
>>>>     if(n.eq.0) then
>>>>       ii := ind(data_1d.lt.levels(n))
>>>>     else if(n.eq.nlevels) then
>>>>       ii := ind(data_1d.ge.levels(n-1))
>>>>     else
>>>>       ii := ind(data_1d.ge.levels(n-1).and.data_1d.lt.levels(n))
>>>>     end if
>>>>     end if
>>>>     if(any(ismissing(ii))) then
>>>>       continue
>>>>     end if
>>>>
>>>> ;---Add the markers
>>>>     mkres at gsMarkerColor = colors(n,:)    ; colors is an N x 4 array
>>>>     plot@$unique_string("markers")$ = gsn_add_polymarker(wks,plot,lo
>>>> n_1d(ii),lat_1d(ii),mkres)
>>>>   end do
>>>> end
>>>>
>>>> ;----------------------------------------------------------------------
>>>> ; Main code
>>>> ;----------------------------------------------------------------------
>>>> begin
>>>>
>>>> ;---Open WRF output file and read data
>>>>
>>>> DATADir = "/data2/tabish/control-run-so4-ECMWF/"
>>>> FILES = systemfunc (" ls -1 " + DATADir + "wrfout_d01_2014-10* ")
>>>> numFILES = dimsizes(FILES)
>>>>
>>>> s=1
>>>> a = addfile(FILES(0)+".nc","r"); THIS IS JUST FOR INITIALIZATION OF
>>>> PM25 ARRAY, IT WILL BE SUBSTRACTED FROM THE SUM IN THE END
>>>> pm25init =  a->PM2_5_DRY(15,0,:,:)
>>>> pm25sum =  pm25init
>>>> times = wrf_user_getvar(a,"times",-1)  ; get all times in the file
>>>> ntimes = dimsizes(times)
>>>> do it = 16,ntimes-1,1             ; TIME LOOP
>>>>     s=s+1
>>>>     print("Working on time: " + times(it) )
>>>>     pm25sum = pm25sum + a->PM2_5_DRY(it,0,:,:)
>>>> end do ; END OF TIME LOOP
>>>>
>>>> do ifil = 1,numFILES-2             ; FILE LOOP
>>>>   a = addfile(FILES(ifil)+".nc","r")   ; Open the next file
>>>>   times = wrf_user_getvar(a,"times",-1)  ; get all times in the file
>>>>   ntimes = dimsizes(times)
>>>>   do it = 0,ntimes-1,1             ; TIME LOOP
>>>>     s=s+1
>>>>     print("Working on time: " + times(it) )
>>>>     pm25sum = pm25sum + a->PM2_5_DRY(it,0,:,:)
>>>>   end do ; END OF TIME LOOP
>>>> end do
>>>>
>>>> a = addfile(FILES(numFILES-1)+".nc","r")   ; Open the next file
>>>>   times = wrf_user_getvar(a,"times",-1)  ; get all times in the file
>>>>   ntimes = dimsizes(times)
>>>>   do it = 0,16,1             ; TIME LOOP
>>>>     s=s+1
>>>>     print("Working on time: " + times(it) )
>>>>     pm25sum = pm25sum + a->PM2_5_DRY(it,0,:,:)
>>>>   end do ; END OF TIME LOOP
>>>>
>>>> pm25_avg=  pm25sum/s
>>>> pm25_avg at description = "PM2.5 conc in ug/m3"
>>>>
>>>>   lat2d = wrf_user_getvar(a,"XLAT",it)   ; latitude/longitude
>>>>   lon2d = wrf_user_getvar(a,"XLONG",it)
>>>>
>>>>   pm25_avg at lat2d = lat2d    ; for plotting
>>>>   pm25_avg at lon2d = lon2d
>>>> ;---Will use this for contours and filled markers
>>>>   colormap = "BlAqGrYeOrReVi200"
>>>>   ;levels   = ispan(0,180,9)
>>>>   levels   = (/0,2,5,10,15,20,25,30,35,40,4
>>>> 5,50,55,60,65,70,80,90,100,110,160,200/)
>>>>
>>>>   wks = gsn_open_wks("x11","wrf_obs_d01-d03_pm25")
>>>>
>>>> ;---Common resources shared by both contour plot and marker plot
>>>>   res                        = True
>>>>   res at gsnMaximize            = True
>>>>   res at gsnLeftString          = ""
>>>>   res at gsnRightString         = ""
>>>>
>>>>   res at mpDataBaseVersion      = "MediumRes"
>>>>  ; res at mpFillOn               = False
>>>>  ; res at mpMinLatF              = min(pm25_avg at lat2d)
>>>>  ; res at mpMaxLatF              = max(pm25_avg at lat2d)
>>>>  ; res at mpMinLonF              = min(pm25_avg at lon2d)
>>>>  ; res at mpMaxLonF              = max(pm25_avg at lon2d)
>>>>  ; res at pmTickMarkDisplayMode  = "Always"      ; better map tickmarks
>>>>
>>>>  res at mpLimitMode       = "Corners"            ; choose range of map
>>>>  res at mpLeftCornerLatF  = 51.8
>>>>  res at mpLeftCornerLonF  = 82.6
>>>>  res at mpRightCornerLatF = 22.66
>>>>  res at mpRightCornerLonF = 130.499
>>>>  res at mpProjection         = "LambertConformal"
>>>>  res at mpLambertParallel1F = 20
>>>>  res at mpLambertParallel2F = 50
>>>>  res at mpLambertMeridianF  = 110
>>>>
>>>>
>>>>
>>>> ;---Resources for filled contour plot
>>>>   cnres                      = res
>>>>   cnres at cnFillOn             = True
>>>>   cnres at cnLevelSelectionMode = "ExplicitLevels"
>>>>   cnres at cnLevels             = levels
>>>>   cnres at cnFillPalette        = colormap
>>>>   cnres at cnLinesOn            = False
>>>>   cnres at cnLineLabelsOn       = False
>>>>   cnres at lbLabelBarOn         = False   ; will add in panel later
>>>>   cnres at pmTitleZone          = 2       ; move title down
>>>>   cnres at gsnAddCyclic         = False
>>>>   cnres at mpLimitMode       = "Corners"            ; choose range of map
>>>>   cnres at mpLeftCornerLatF  = 51.8
>>>>   cnres at mpLeftCornerLonF  = 82.6
>>>>   cnres at mpRightCornerLatF = 22.66
>>>>   cnres at mpRightCornerLonF = 130.499
>>>>   cnres at mpProjection         = "LambertConformal"
>>>>   cnres at mpLambertParallel1F = 20
>>>>   cnres at mpLambertParallel2F = 50
>>>>   cnres at mpLambertMeridianF  = 110
>>>>
>>>>   cnres at mpFillOn                    =  True
>>>>   cnres at mpOutlineDrawOrder          = "PostDraw"
>>>>   cnres at mpFillDrawOrder             = "PreDraw"
>>>>  ; cnres at mpOutlineBoundarySets       = "National"
>>>>   cnres at mpOutlineBoundarySets       = "Allboundaries"
>>>>   cnres at mpUSStateLineDashPattern    = 2
>>>>   cnres at mpOutlineOn           = True
>>>>   cnres at mpDataBaseVersion        = "MediumRes"
>>>>   cnres at mpDataSetName            = "Earth..4"      ; U.S. counties
>>>>   ;cnres at mpGridAndLimbOn = True
>>>>   ;cnres at mpGridLineColor = "Grey"
>>>>   cnres at mpFillColors = (/"transparent","transparent",
>>>> "gray","transparent"/)
>>>>   cnres at pmTickMarkDisplayMode = "Always"
>>>>   cnres at tiMainString = "Domain 1 @ 27km"
>>>>   cnres at tiDeltaF = 3.3
>>>>   cnres at tfDoNDCOverlay = True
>>>>
>>>>   cnres at gsnDraw  = False                          ; don't draw
>>>>   cnres at gsnFrame = False                          ; don't advance frame
>>>>
>>>> ; cnres at vpWidthF         = 0.40
>>>>  cnres at vpHeightF        = 0.20
>>>>
>>>> ;---Create smooth contour plot
>>>>   plot_wrf_d01 = gsn_csm_contour_map(wks,pm25_avg,cnres)
>>>>
>>>>
>>>> delete(pm25init)
>>>> delete(pm25sum)
>>>> delete(pm25_avg)
>>>> delete(s)
>>>> delete(lat2d)
>>>> delete(lon2d)
>>>> ;----------------------------------------------------------------------
>>>> ; Recreate similar plot, but by using filled markers drawn over a map.
>>>> ;----------------------------------------------------------------------
>>>>  fname = "surfacedata_12-31_Octmean_improved_nomissingval.txt"
>>>>   lines = asciiread(fname,-1,"string")
>>>>   lon = tofloat(str_get_field(lines(:),2," "))
>>>>   lat = tofloat(str_get_field(lines(:),3," "))
>>>>   pm25 = tofloat(str_get_field(lines(:),4," "))
>>>>
>>>>
>>>> ;*****************************************
>>>> ; add black circles over obs data
>>>> ;*****************************************
>>>>   polyres               = True          ; poly marker mods desired
>>>>   polyres at gsMarkerIndex = 4            ; choose circle as polymarker
>>>>   polyres at gsMarkerSizeF = 5           ; select size to avoid streaking
>>>>   polyres at gsMarkerColor = (/"black"/)   ; choose color
>>>>   polyres at gsMarkerThicknessF  = 2.0
>>>>   tabish1=gsn_add_polymarker(wks,plot_wrf_d01,lon,lat,polyres)  ; draw
>>>> polymarkers
>>>>
>>>> ;---Add colored markers to the map
>>>>   add_obs_markers_to_map(wks,plot_wrf_d01,levels,colormap,pm25,lat,lon)
>>>>
>>>> ;  draw(plot_wrf)
>>>> ;  frame(wks)
>>>>
>>>> ;***********************************************
>>>> ; NOW REPEATING THE SAME ROUTINE FOR D03
>>>> ;***********************************************
>>>>
>>>>
>>>>   DATADir = "/data2/tabish/control-run-so4-ECMWF/"
>>>> FILES = systemfunc (" ls -1 " + DATADir + "wrfout_d03_2014-10* ")
>>>> numFILES = dimsizes(FILES)
>>>>
>>>> s=1
>>>> a = addfile(FILES(0)+".nc","r"); THIS IS JUST FOR INITIALIZATION OF
>>>> PM25 ARRAY, IT WILL BE SUBSTRACTED FROM THE SUM IN THE END
>>>> pm25init =  a->PM2_5_DRY(15,0,:,:)
>>>> pm25sum =  pm25init
>>>> times = wrf_user_getvar(a,"times",-1)  ; get all times in the file
>>>> ntimes = dimsizes(times)
>>>> do it = 16,ntimes-1,1             ; TIME LOOP
>>>>     s=s+1
>>>>     print("Working on time: " + times(it) )
>>>>     pm25sum = pm25sum + a->PM2_5_DRY(it,0,:,:)
>>>> end do ; END OF TIME LOOP
>>>>
>>>> do ifil = 1,numFILES-2             ; FILE LOOP
>>>>   a = addfile(FILES(ifil)+".nc","r")   ; Open the next file
>>>>   times = wrf_user_getvar(a,"times",-1)  ; get all times in the file
>>>>   ntimes = dimsizes(times)
>>>>   do it = 0,ntimes-1,1             ; TIME LOOP
>>>>     s=s+1
>>>>     print("Working on time: " + times(it) )
>>>>     pm25sum = pm25sum + a->PM2_5_DRY(it,0,:,:)
>>>>   end do ; END OF TIME LOOP
>>>> end do
>>>> pm25_avg= pm25sum/s
>>>> ;pm25_avg at description = "NO2 conc in ppbv"
>>>>
>>>>   lat2d = wrf_user_getvar(a,"XLAT",it)   ; latitude/longitude
>>>>   lon2d = wrf_user_getvar(a,"XLONG",it)
>>>>
>>>>   pm25_avg at lat2d = lat2d    ; for plotting
>>>>   pm25_avg at lon2d = lon2d
>>>>  res at mpLimitMode       = "Corners"            ; choose range of map
>>>>  res at mpLeftCornerLatF  = 36.05806
>>>>  res at mpLeftCornerLonF  = 113.3356
>>>>  res at mpRightCornerLatF = 42.4514
>>>>  res at mpRightCornerLonF = 120.2583
>>>>   cnres at mpLimitMode       = "Corners"            ; choose range of map
>>>>   cnres at mpLeftCornerLatF  = 36.05806
>>>>   cnres at mpLeftCornerLonF  = 113.3356
>>>>   cnres at mpRightCornerLatF = 42.4514
>>>>   cnres at mpRightCornerLonF = 120.2583
>>>> cnres at tiMainString = "Domain 3 @ 3km"
>>>> cnres at vpKeepAspect = True
>>>>  cnres at vpHeightF        = 0.20
>>>>
>>>> ;---Create smooth contour plot
>>>>   plot_wrf_d03 = gsn_csm_contour_map(wks,pm25_avg,cnres)
>>>> ;*****************************************
>>>> ; add black circles over obs data
>>>> ;*****************************************
>>>>   polyres               = True          ; poly marker mods desired
>>>>   polyres at gsMarkerIndex = 4            ; choose circle as polymarker
>>>>   polyres at gsMarkerSizeF = 5           ; select size to avoid streaking
>>>>   polyres at gsMarkerColor = (/"black"/)   ; choose color
>>>>   polyres at gsMarkerThicknessF  = 2.0
>>>> tabish3=gsn_add_polymarker(wks,plot_wrf_d03,lon,lat,polyres)  ; draw
>>>> polymarkers
>>>>
>>>> ;---Add colored markers to the map
>>>>   add_obs_markers_to_map(wks,plot_wrf_d03,levels,colormap,pm25,lat,lon)
>>>>
>>>>
>>>> ;---Panel both plots for comparison.
>>>>   pres                    = True
>>>>   pres at gsnMaximize        = True
>>>>   pres at gsnPanelLabelBar   = True
>>>>   pres at pmLabelBarWidthF   = 0.8
>>>>   pres at lbLabelFontHeightF = 0.01
>>>>   pres at gsnFrame = False
>>>>   pres at gsnPanelBottom   = 0.05                   ; add space at bottom
>>>>   gsn_panel(wks,(/plot_wrf_d01,plot_wrf_d03/),(/1,2/),pres)
>>>>
>>>> ; Draw a text string at the bottom
>>>>   txres               = True
>>>>   txres at txFontHeightF = 0.012
>>>>   gsn_text_ndc(wks,"PM2.5 in ug/m3",0.5,0.28,txres)
>>>>   frame(wks)
>>>> ; Maximize plots in frame.
>>>> ; psres = True
>>>> ; maximize_output(wks,psres)  ; calls draw and frame for you
>>>>
>>>>
>>>> end
>>>>
>>>>
>>>> Your help will be greatly appreciated.
>>>>
>>>> Thanks
>>>>
>>>> Tabish
>>>>
>>>>
>>>> Tabish U Ansari
>>>> PhD student, Lancaster Environment Center
>>>> Lancaster Univeristy
>>>> Bailrigg, Lancaster,
>>>> LA1 4YW, United Kingdom
>>>>
>>>> _______________________________________________
>>>> ncl-talk mailing list
>>>> ncl-talk at ucar.edu
>>>> List instructions, subscriber options, unsubscribe:
>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>
>>>>
>>>
>>>
>>> --
>>> Adam Phillips
>>> Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
>>> www.cgd.ucar.edu/staff/asphilli/   303-497-1726
>>>
>>> <http://www.cgd.ucar.edu/staff/asphilli>
>>>
>>
>>
>
>
> --
> Adam Phillips
> Associate Scientist,  Climate and Global Dynamics Laboratory, NCAR
> www.cgd.ucar.edu/staff/asphilli/   303-497-1726
>
> <http://www.cgd.ucar.edu/staff/asphilli>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20180515/0cb42134/attachment.html>


More information about the ncl-talk mailing list