;---------------------------------------------------------------------- ; xy_23.ncl ; ; Concepts illustrated: ; - Drawing stacked XY plots ; - Attaching multiple XY plots along the X axes ; - Turning off tickmarks on the left Y axis ; - Turning on tickmarks on the right Y axis ; - Moving tickmark labels away from axis ;---------------------------------------------------------------------- ; See example xy_34.ncl for a variation of this plot that doesn't ; use gsn_attach_plots. This one adds special highlighting to two ; of the plots. ;---------------------------------------------------------------------- ; These files are loaded by default in NCL V6.2.0 and newer ; load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" ; load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl" ;---------------------------------------------------------------------- ; ; This example illustrates the creation of a set of 4 ; of 'stacked' XY plots. Each plot has the same X axis. ; By using gsn_attach_plots, all four plots can be ; manipulated as a unit through the base plot. ; ; To demonstrate this concept, the base plot is resized ; in the second frame. ; ; Each plot draws a variation of sinusoidal curve. ;---------------------------------------------------------------------- begin ; ; Define the number of points in each curve. ; NPTS = 500 PI100 = 0.031415926535898 EXP = 2.7182818 ; ; Create data for the four XY plots. ; theta = PI100*ispan(0,NPTS-1,1) y1 = sin(theta) y2 = sin(theta * theta) y3 = sin(EXP^theta) y4 = sin(3*sqrt(fabs(theta))) wks = gsn_open_wks("png","xy") res = True res@gsnMaximize = True res@gsnDraw = False res@gsnFrame = False res@vpWidthF = 0.8 ; Make plots wider than res@vpHeightF = 0.2 ; they are high. res@tmYUseLeft = False ; Make right axis independent of left res@tmYLOn = False ; Turn off left tickmarks res@tmYROn = True ; Turn on right tickmarks res@tmXTOn = False ; Turn off top tickmarks res@tmYLLabelsOn = False ; Turn off left labels res@tmYRLabelsOn = True ; Turn on right labels res@tmYRMinorOn = False ; Turn off minor ticks on Y axis res@tmYRLabelFontHeightF = 0.015 ; Increase font height res@tmYRLabelDeltaF = 2.0 ; Increase space b/w ticks and labels res@tmYRLabelJust = "CenterRight" ; right-justify labels res@xyLineThicknessF = 2.0 ; Twice as thick ; Change y axis string and color for each plot. res@tiYAxisString = "xy1" res@xyLineColor = "Purple" xy1 = gsn_csm_y(wks,y1,res) ; Create the four plots. res@tiYAxisString = "xy2" res@xyLineColor = "Brown" xy2 = gsn_csm_y(wks,y2,res) ; They won't be drawn yet. res@tiYAxisString = "xy3" res@xyLineColor = "Orange" xy3 = gsn_csm_y(wks,y3,res) res@tiYAxisString = "xy4" res@xyLineColor = "ForestGreen" xy4 = gsn_csm_y(wks,y4,res) ; Set up resource lists for attaching the plot. ; The res1 will apply to the base plot, and the ; res2 to the plots being attached. These resources ; lists are *not* for changing things like line color, ; but for changing things like whether the plots ; are maximized, and which axis they are attached on. ; res1 = True res2 = True res1@gsnMaximize = True res2@gsnAttachPlotsXAxis = True ; xy1 will be the base plot. amid = gsn_attach_plots(xy1,(/xy2,xy3,xy4/),res1,res2) draw(xy1) ; All four plots will be drawn. frame(wks) ; Resize base plot and watch how other plots follow. setvalues xy1 "vpWidthF" : 0.4 "vpHeightF" : 0.15 end setvalues draw(xy1) ; All four plots will be smaller. frame(wks) end