[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