; pro pltst_vec,position,backgnd=backgnd,ylaboff=ylaboff,cgm=cgm,ps=ps @pltdat.h ; ; Plot vectors on ST projection: ; Include background (axes, labels, maps, etc) if keyword_set(backgnd) ; iback = 0 if keyword_set(backgnd) then iback = 1 ylaboffset = .20 if map.sltxax gt 0 then ylaboffset = .30 if keyword_set(ylaboff) then ylaboffset = ylaboff print,' ' nxvec = uframe.nx & nyvec = uframe.ny un = uframe.zz & vn = vframe.zz dlat = uframe.yy(1)-uframe.yy(0) nlats = fix(((90.-abs(map.stperim)+dlat/2.)/dlat)+.5) if (map.projcen(0) lt 0. and frame.yy(nlats-1) gt map.stperim) or $ (map.projcen(0) gt 0. and frame.yy(frame.ny-nlats) lt map.stperim) then $ nlats = nlats-1 iskip = frame.ny-nlats if map.projcen(0) lt 0. then iskip = 0 unpol = fltarr(nxvec,nlats) & vnpol = fltarr(nxvec,nlats) for j=0,nlats-1 do begin unpol(*,j) = un(*,iskip+j) vnpol(*,j) = vn(*,iskip+j) endfor uvpolmag = fltarr(nxvec,nlats,/nozero) & uvpolmag(*,*) = spval & ngood = 0 good = where(unpol ne spval and vnpol ne spval,ngood) if ngood gt 0 then uvpolmag(good) = sqrt(unpol(good)^2+vnpol(good)^2) fminmax, uvpolmag,nxvec*nlats,minmag,maxmag,spval ; ; Prepare un+vn vectors with increments ; (only un need be changed since gridvec will not plot if either ; un or vn are spval) ; glat = fltarr(nlats) for j=0,nlats-1 do glat(j) = uframe.yy(iskip+j) igen = findgen(nxvec) for j=0,nlats-1 do begin case abs(glat(j)) of map.stperim: unpol(*,j) = !spval uframe.yy(nyvec-1): unpol(where(igen mod 24 ne 0),j) = !spval uframe.yy(nyvec-2): unpol(where(igen mod 8 ne 0),j) = !spval uframe.yy(nyvec-3): unpol(where(igen mod 6 ne 0),j) = !spval uframe.yy(nyvec-4): unpol(where(igen mod 4 ne 0),j) = !spval abs(uframe.yy(0)): unpol(where(igen mod 24 ne 0),j) = !spval abs(uframe.yy(1)): unpol(where(igen mod 8 ne 0),j) = !spval abs(uframe.yy(2)): unpol(where(igen mod 6 ne 0),j) = !spval abs(uframe.yy(3)): unpol(where(igen mod 4 ne 0),j) = !spval else: unpol(where(igen mod 2 ne 0),j) = !spval endcase endfor print,' min,max magnitudes = ',minmag,maxmag ; were found above vectitle = 'U+V MAGNITUDE MIN,MAX = ' + $ strcompress(string(minmag,format="(G9.3)"),/remove_all)+', '+ $ strcompress(string(maxmag,format="(G9.3)"),/remove_all) vecshort = '('+strcompress(string(minmag,format="(G9.3)"),/remove_all)+$ '->'+strcompress(string(maxmag,format="(G9.3)"),/remove_all)+')' if vec.vmag eq 0. then begin vec.vmag = rnd(maxmag,50.) if vec.vmag eq 0. then vec.vmag = float(maxmag) print,'Using scale magnitude of ',vec.vmag endif ; ; Position is passed in from pltst: ; xll = position(0) & yll = position(1) xur = position(2) & yur = position(3) xmid = .5*(xll+xur) ; ; Draw background if necessary: ; if iback gt 0 then begin hem = 'S' if map.projcen(0) gt 0. then hem = 'N' chsize_toplab = 1.5 & if keyword_set(cgm) then chsize_toplab = 1.2 chsize_tics = 1.3 & if keyword_set(cgm) then chsize_tics = 1. chsize_range = 1.1 & if keyword_set(cgm) then chsize_range = .8 fudge = .02*(xur-xll) mappos = [xll-fudge,yll-fudge,xur+fudge,yur+fudge] labpol,mappos,hem,chsize_tics mapset,mappos,map.projcen,map.stperim if map.continents gt -1 then map_continents,mlinestyle=contline,$ color=map.continents if map.grid gt -1 then map_grid,/label,color=map.grid xmid = .5*(xll+xur) if imcon ne 0 and imcon ne 2 then $ xyouts,xmid,yur+.07,frame.toplab,/norm,charsize=chsize_toplab,align=.5 $ else $ xyouts,.5,yur+.06,frame.toplab,/norm,charsize=chsize_toplab,align=.5 xyouts,xmid,yll-.13,frame.botlab,align=.5,/norm,charsize=chsize_range endif ; ; Draw vectors: ; tlon = fslt(12.,ut,dum,3) gridvec,unpol,vnpol,uframe.xx,glat,map.proj,color=vec.vclr,ps=ps,$ spval=!spval,position=position,toplon=tlon,perimlat=map.stperim,$ scalemag=vec.vmag,scalelen=vec.vlen,xscale=.90,yscale=.08 ; if iback gt 0 then begin print,'Completed frame ',iframe iframe = iframe+1 endif return end