Re: changing aspect ratio of the XY plot

From: Mary Haley <haley_at_nyahnyahspammersnyahnyah>
Date: Thu Feb 02 2012 - 04:06:11 MST

Hi Ufuk,

My apologies: with the gsn_attach_plots function, it appears to be maximizing the size of the plots no matter what.

You can work around this by adding the following code just before the "draw(plot1)" code:

  setvalues plot1
    "vpHeightF" : res1@vpHeightF
    "vpWidthF" : res1@vpWidthF
  end setvalues

  setvalues plot2
    "vpHeightF" : res1@vpHeightF
    "vpWidthF" : res1@vpWidthF
  end setvalues

You may also want to set vpXF and vpYF to reposition both plots.

--Mary

On Jan 30, 2012, at 7:00 PM, Ufuk Utku Turuncoglu (BE) wrote:

> ;-----------------------------------------------------------
> 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"
> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl"
> load "plot_func.ncl"
> ;-----------------------------------------------------------
> begin
> ;--- parameters ---
> debug = False
>
> ;--- define basin ---
> id = 0
>
> ;--- definitions ---
> ;--- basins ---
> bids = (/ 1, 2, 3, 4, 5, 6, 0 /)
> bdsc = (/ "CAS", \
> "Volga", \
> "Ural", \
> "Kura", \
> "CAS+Volga+Ural+Kura", \
> "Volga+Ural+Kura", \
> "CAS20" /)
> nbasin = dimsizes(bids)
>
> ;--- open files ---
> dres = "20km"
>
> nc_trip1 = addfile("dsets/trip/"+dres+"/trip_rcm_nn.nc", "r")
> nc_obs1 = addfile("dsets/srb/"+dres+"/srbLW_1989-2007_rcm_mon.nc", "r")
> nc_obs2 =
> addfile("dsets/srb/"+dres+"/srbSW_local_1989-2007_rcm_mon.nc", "r")
> nc_data1n = addfile("dsets/runs/74/flw_1989-2007_mon.nc", "r")
> ;nc_data1d = addfile("dsets/runs/74/fld_1989-2007_mon.nc", "r")
> nc_data2n = addfile("dsets/runs/74/fsw_1989-2007_mon.nc", "r")
> ;nc_data2d = addfile("dsets/runs/74/sina_1989-2007_mon.nc", "r")
>
> ;--- read variables ---
> rb1 = nc_trip1->rbasin
>
> varo1d = nc_obs1->lw_sfc_dn
> varo1n = nc_obs1->lw_sfc_net
> varo1u = varo1d-varo1n
>
> varo2u = nc_obs2->sw_sfc_up
> varo2d = nc_obs2->sw_sfc_dn
> varo2n = varo2d-varo2u
>
> varm1n = nc_data1n->flw
> ;varm1d = nc_data1d->fld
> ;varm1u = varm1d-varm1n
>
> varm2n = nc_data2n->fsw
> ;varm2d = nc_data2d->sina
> ;varm2u = varm2d-varm2n
>
> ;--- read mask and coordinates ---
> lat2d = nc_data1n->xlat
> lon2d = nc_data1n->xlon
> lsmask = nc_data1n->mask
> dims = dimsizes(lat2d)
> jm = dims(0)
> im = dims(1)
>
> ;--- mask data based on basin and RCM land sea mask ---
> dmask = new((/ jm, im /), "integer")
> dmask = 0
>
> ;--- sub region ---
> xbox = (/ 46.0, 56.0, 56.0, 46.0, 46.0 /)
> ybox = (/ 35.5, 35.5, 48.0, 48.0, 35.5 /)
>
> do i = 0, im-1
> do j = 0, jm-1
> if (gc_inout(lat2d(j,i), lon2d(j,i), ybox, xbox) .and. \
> lsmask(j,i) .eq. 0.0) then
> dmask(j,i) = 1
> end if
> end do
> end do
>
> ;--- create basin data ---
> data = tointeger(lsmask)*0
> data = where(dmask .eq. 1, 1, \
> where(rb1 .eq. 13, 2, \
> where(rb1 .eq. 78, 3, \
> where(rb1 .eq. 93, 4, 99))))
> data = mask(data, data .eq. 99, False)
> data@lat2d = lat2d
> data@lon2d = lon2d
>
> ;--- create temporary arrays ---
> ntime = dimsizes(varo1n(:,0,0))
> y1ou = new((/ nbasin, ntime /), typeof(varo1n))
> y1od = new((/ nbasin, ntime /), typeof(varo1n))
> y1on = new((/ nbasin, ntime /), typeof(varo1n))
>
> y2ou = new((/ nbasin, ntime /), typeof(varo2n))
> y2od = new((/ nbasin, ntime /), typeof(varo2n))
> y2on = new((/ nbasin, ntime /), typeof(varo2n))
>
> y1mu = new((/ nbasin, ntime /), typeof(varm1n))
> y1md = new((/ nbasin, ntime /), typeof(varm1n))
> y1mn = new((/ nbasin, ntime /), typeof(varm1n))
>
> y2mu = new((/ nbasin, ntime /), typeof(varm2n))
> y2md = new((/ nbasin, ntime /), typeof(varm2n))
> y2mn = new((/ nbasin, ntime /), typeof(varm2n))
>
> ;--- calculate average over basin ---
> do i = 0, dimsizes(bids)-1
>
> print("******************************************************************")
> print(""+bdsc(i)+" "+i)
>
> print("******************************************************************")
>
> ;--- init variables ---
> varo1u_masked = varo1u
> varo1d_masked = varo1d
> varo1n_masked = varo1n
>
> varo2u_masked = varo2u
> varo2d_masked = varo2d
> varo2n_masked = varo2n
>
> ;varm1u_masked = varm1u
> ;varm1d_masked = varm1d
> varm1n_masked = varm1n
>
> ;varm2u_masked = varm2u
> ;varm2d_masked = varm2d
> varm2n_masked = varm2n
>
> ;--- mask data based on selected region ---
> if ((bids(i) .gt. 0) .and. (bids(i) .lt. 5)) then
> varo1u_masked = mask(varo1u, data .eq. bids(i), True)
> varo1d_masked = mask(varo1d, data .eq. bids(i), True)
> varo1n_masked = mask(varo1n, data .eq. bids(i), True)
> varo2u_masked = mask(varo2u, data .eq. bids(i), True)
> varo2d_masked = mask(varo2d, data .eq. bids(i), True)
> varo2n_masked = mask(varo2n, data .eq. bids(i), True)
> ;varm1u_masked = mask(varm1u, data .eq. bids(i), True)
> ;varm1d_masked = mask(varm1d, data .eq. bids(i), True)
> varm1n_masked = mask(varm1n, data .eq. bids(i), True)
> ;varm2u_masked = mask(varm2u, data .eq. bids(i), True)
> ;varm2d_masked = mask(varm2d, data .eq. bids(i), True)
> varm2n_masked = mask(varm2n, data .eq. bids(i), True)
> end if
> if (bids(i) .eq. 5) then
> varo1u_masked = mask(varo1u, ismissing(data), False)
> varo1d_masked = mask(varo1d, ismissing(data), False)
> varo1n_masked = mask(varo1n, ismissing(data), False)
> varo2u_masked = mask(varo2u, ismissing(data), False)
> varo2d_masked = mask(varo2d, ismissing(data), False)
> varo2n_masked = mask(varo2n, ismissing(data), False)
> ;varm1u_masked = mask(varm1u, ismissing(data), False)
> ;varm1d_masked = mask(varm1d, ismissing(data), False)
> varm1n_masked = mask(varm1n, ismissing(data), False)
> ;varm2u_masked = mask(varm2u, ismissing(data), False)
> ;varm2d_masked = mask(varm2d, ismissing(data), False)
> varm2n_masked = mask(varm2n, ismissing(data), False)
> end if
> if (bids(i) .eq. 6) then
> varo1u_masked = mask(varo1u, data .eq. 1, False)
> varo1d_masked = mask(varo1d, data .eq. 1, False)
> varo1n_masked = mask(varo1n, data .eq. 1, False)
> varo2u_masked = mask(varo2u, data .eq. 1, False)
> varo2d_masked = mask(varo2d, data .eq. 1, False)
> varo2n_masked = mask(varo2n, data .eq. 1, False)
> ;varm1u_masked = mask(varm1u, data .eq. 1, False)
> ;varm1d_masked = mask(varm1d, data .eq. 1, False)
> varm1n_masked = mask(varm1n, data .eq. 1, False)
> ;varm2u_masked = mask(varm2u, data .eq. 1, False)
> ;varm2d_masked = mask(varm2d, data .eq. 1, False)
> varm2n_masked = mask(varm2n, data .eq. 1, False)
> end if
>
> if (debug) then
> ;--- plot data ---
> wks = gsn_open_wks("pdf","plot_rad3_"+i)
> gsn_define_colormap(wks, "gui_default")
>
> ;--- define map resource ---
> res = True
> res@gsnAddCyclic = False
> res@gsnLeftString = ""
> res@gsnRightString = ""
> res@cnFillOn = True
> res@cnFillMode = "CellFill"
> res@cnInfoLabelOn = False
> res@cnLinesOn = False
> res@cnLineLabelsOn = False
> res@lbLabelBarOn = True
> res@lbLabelFontHeightF = 0.01
> res@pmLabelBarWidthF = 0.06
> res@pmTickMarkDisplayMode = "Always"
> res@tiXAxisFontHeightF = 0.01
> res@tiYAxisFontHeightF = 0.01
> res@tmXBLabelFontHeightF = 0.01
> res@tmYLLabelFontHeightF = 0.01
> res@tiXAxisString = "Longitude"
> res@tiYAxisString = "Latitude"
>
> ;--- map definitions ---
> res@mpDataBaseVersion = "HighRes"
> res@mpProjection = "LambertConformal"
> res@mpOutlineDrawOrder = "PostDraw"
> res@mpGridAndLimbOn = False
> res@mpLambertParallel1F = 30
> res@mpLambertParallel2F = 60
>
> res@mpLimitMode = "Corners"
> res@mpLeftCornerLatF = 35.0
> res@mpLeftCornerLonF = 37.0
> res@mpRightCornerLatF = 64.0
> res@mpRightCornerLonF = 67.0
> res@mpLambertMeridianF = 51.0
>
> varm1_masked@lon2d = lon2d
> varm1_masked@lat2d = lat2d
> plot = gsn_csm_contour_map(wks, varm1_masked(0,:,:), res)
>
> delete(wks)
> delete(plot)
> end if
>
> ;--- calculate basin averages ---
> y1ou(i,:) = dim_avg_n(varo1u_masked, (/1,2/))
> y1od(i,:) = dim_avg_n(varo1d_masked, (/1,2/))
> y1on(i,:) = dim_avg_n(varo1n_masked, (/1,2/))
> y2ou(i,:) = dim_avg_n(varo2u_masked, (/1,2/))
> y2od(i,:) = dim_avg_n(varo2d_masked, (/1,2/))
> y2on(i,:) = dim_avg_n(varo2n_masked, (/1,2/))
> ;y1mu(i,:) = dim_avg_n(varm1u_masked, (/1,2/))
> ;y1md(i,:) = dim_avg_n(varm1d_masked, (/1,2/))
> y1mn(i,:) = dim_avg_n(varm1n_masked, (/1,2/))
> ;y2mu(i,:) = dim_avg_n(varm2u_masked, (/1,2/))
> ;y2md(i,:) = dim_avg_n(varm2d_masked, (/1,2/))
> y2mn(i,:) = dim_avg_n(varm2n_masked, (/1,2/))
> end do
>
> xf = cd_calendar(nc_obs1->time, 4)
>
> ;--- plot data ---
> wks = gsn_open_wks("newpdf", "plot_rad3")
> gsn_define_colormap(wks, "uniform")
>
> ;--- resource for text ---
> res_text = True
> res_text@txFontHeightF = 0.010
> res_text@txJust = "CenterRight"
>
> ;--- resource for plot ---
> res1 = True
> res1@gsnDraw = False
> res1@gsnFrame = False
> res1@trXMinF = 1988.5
> res1@trXMaxF = 2008.5
> res1@mpShapeMode = "FreeAspect"
> res1@vpHeightF = 0.25 ;0.1
> res1@vpWidthF = 0.55 ;0.70
>
> colors = (/ "red", "blue" /)
> res1@xyLineColors = colors
> res1@xyLineThicknesses = (/ 1.5, 1.5 /)
> res1@xyDashPatterns = (/ 0.0, 0.0 /)
>
> res1@tmXBMode = "Explicit"
> res1@tmXBValues = fspan(1989,2008,20)
> res1@tmXBLabels = fspan(1989,2008,20)
> res1@tmXBLabelAngleF = 90.0
> res1@tmXBLabelJust = "CenterRight"
>
> res2 = res1
>
> ;--- plot longwave ---
> res1@gsnLeftString = "Basin: "+bdsc(id)
> res1@gsnLeftStringFontHeightF = 0.010
> res1@tiXAxisOn = False
> res1@tmXBLabelsOn = False
> res1@tmYLLabelFontHeightF = 0.01
>
> plot1 = gsn_csm_xy(wks, xf, (/ y1on(id,:), -1.0*y1mn(id,:) /), res1)
> dum1 = gsn_add_text(wks, plot1, "Longwave Radiation (W/m~S~2~N~)",
> max(xf)+0.5, -45, res_text)
>
> ;--- plot shortwave ---
> res2@gsnLeftString = ""
> res2@tmXBLabelsOn = True
> res2@tiXAxisOn = True
> res2@tiXAxisString = "Time (year)"
> res2@tiXAxisFontHeightF = 0.012
> res2@tmYLLabelsOn = False
> res2@tmYRLabelsOn = True
> res2@tiYAxisSide = "Right"
> res2@tmYRLabelFontHeightF = 0.01
> res2@tmXBLabelFontHeightF = 0.01
>
> plot2 = gsn_csm_xy(wks, xf, (/ y2on(id,:), y2mn(id,:) /), res2)
> dum2 = gsn_add_text(wks, plot2, "Shortwave Radiation (W/m~S~2~N~)",
> max(xf)+0.5, 300, res_text)
>
> ;--- attach plots ---
> res_attach1 = True
> res_attach1@gsnAttachPlotsXAxis = True
> res_attach2 = True
> res_attach2@gsnAttachPlotsXAxis = True
> plot3 = gsn_attach_plots(plot1, (/plot2/), res_attach1, res_attach2)
>
> drawNDCGrid(wks)
> draw(plot1)
> draw_vp_box(wks,plot1)
>
> frame(wks)
> ;pres = False
> ;maximize_output(wks, pres)
> end
> ----
>
> _______________________________________________
> 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
Received on Thu Feb 2 04:06:25 2012

This archive was generated by hypermail 2.1.8 : Mon Feb 06 2012 - 14:24:56 MST