Hi,
I try to change aspect ratio of the XY plot and i am using vpHeightF and
vpWidthF resources. After a certain ratio of the vpHeightF and vpWidthF,
the NCL modifies those value and the result plot is not in the same
aspect ratio that is defined using those resources. Is there any way to
force the NCL to use the defined aspect ratio. I found that there is a
spacial resource (mpShapeMode) for map plots. Is it exist also for XY plots?
Best regards,
--ufuk
--- NCL CODE ---
;-----------------------------------------------------------
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-talkReceived on Mon Jan 30 19:01:10 2012
This archive was generated by hypermail 2.1.8 : Thu Feb 02 2012 - 03:10:31 MST