load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/shea_util.ncl" undef("gsn_create_labelbar_ndc") function gsn_create_labelbar_ndc(wks:graphic, nbox:integer, labels:string, \ x,y,resources:logical ) local res2, lbres, wksname begin res2 = get_resources(resources) lbres = get_res_eq(res2,(/"lb","vp"/)) wksname = get_res_value_keep(wks,"name","gsnapp") ; ; A special test is needed for the resource lbLabelFontHeightF. ; If it is set, then we need to turn off lbAutoManage. The ; user can override this, of course. ; if(lbres.and..not.any(ismissing(getvaratts(lbres))).and.\ isatt(lbres,"lbLabelFontHeightF")) auto_manage = get_res_value(lbres,"lbAutoManage",False) else auto_manage = get_res_value(lbres,"lbAutoManage",True) end if ; ; If x,y < 0, this is invalid, and hence don't use these values. ; This was a special way to allow gsn_create_labelbar to call this ; routine without needing valid x, y values. ; if(x.lt.0.or.y.lt.0) then lbid = create wksname + "_labelbar" labelBarClass wks "lbBoxCount" : nbox "lbLabelStrings" : labels "lbAutoManage" : auto_manage end create else lbid = create wksname + "_labelbar" labelBarClass wks "vpXF" : x "vpYF" : y "lbBoxCount" : nbox "lbLabelStrings" : labels "lbAutoManage" : auto_manage end create end if if(lbres.and..not.any(ismissing(getvaratts(lbres)))) attsetvalues_check(lbid,lbres) end if ; Return labelbar. return(lbid) end begin ; define workspace wks_type = "x11" wks = gsn_open_wks(wks_type, "cbarproblem") gsn_define_colormap(wks,"cosam12") map = gsn_retrieve_colormap(wks) ;draw grid drawNDCGrid(wks) ; draw labelbar levels = fspan(1.0,12.0,12) labels = levels+"" r = True r@lbBottomMarginF = 0.0 r@lbTitleOn = False r@lbTopMarginF = 0.0 r@lbLeftMarginF = 0.0 r@lbRightMarginF = 0.0 r@lbJustification = "TopLeft" r@lbOrientation = "Vertical" r@lbAutoManage = False r@lbBoxMinorExtentF = 1.0 r@lbLabelOffsetF = .5 r@vpWidthF = 0.03 r@lbLabelAutoStride = True r@lbLabelsOn = True r@lbLabelAlignment = "InteriorEdges" r@lbLabelJust = "CenterLeft" r@lbMonoFillPattern = True r@lbPerimOn = True r@lbFillColors = map(1:dimsizes(levels),:) r@vpHeightF = 0.4 ypos = 0.8 lres = True lres@gsLineColor = "blue" lres@gsLineThicknessF = 2.0 do i=0,3 xpos = 0.2 + 0.2*i if (i.eq.0) then r@lbLabelFontHeightF = 0.01 end if if (i.eq.1) then r@lbLabelFontHeightF = 0.02 end if if (i.eq.2) then r@lbLabelFontHeightF = 0.05 end if if (i.eq.3) then r@lbLabelFontHeightF = 0.1 end if lbid = gsn_create_labelbar_ndc(wks,dimsizes(levels)+1,labels,xpos,ypos,r) draw(lbid) ; bb = NhlGetBB(lbid) ; gsn_polyline_ndc(wks,(/bb(2),bb(3),bb(3),bb(2),bb(2)/), \ ; (/bb(0),bb(0),bb(1),bb(1),bb(0)/),lres) end do delete(levels) delete(labels) delete(r) delete(map) ; finish plot frame(wks) delete(wks) end