Re: line dash patterns in the legend

From: Mary Haley <haley_at_nyahnyahspammersnyahnyah>
Date: Tue Feb 08 2011 - 08:08:05 MST

Dear Basit,

You want to use lgDashIndexes and not lgDashIndex, if you are defining
multiple dash patterns in a legend. Also, use integers, and not
floating point numbers. These are supposed to be index values into the
dash pattern table at:

http://www.ncl.ucar.edu/Document/Graphics/Images/dashpatterns.png

If you go to:

http://www.ncl.ucar.edu/Applications/res_list.shtml

and search for "lgDashIndexes", you'll see some examples. Examples 6
and 11 on the legend page:

http://www.ncl.ucar.edu/Applications/legend.shtm

is a good place to start.

--Mary

On Feb 7, 2011, at 9:48 PM, Basit Khan wrote:

> Hi ncl friends,
> I am trying to allocate and plot particular dash pattern in the
> legend of my xy plots. But I am unable to control or plot line dash
> pattern in the legend. I guess lgDashIndex or lgDashIndexes
> should be able to do the trick but for some reason its not working
> for me. I would greatly appreciate if somebody could help me to fix
> this problem.
>
> My ncl code is copied below:
>
> Cheers,
> Basit
> ----------------------
>
>
> 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/wrf/WRFUserARW.ncl"
>
> begin
>
> bh22_h = addfile ("/hpc/bluefern/WRF/basit/basit-archive/b-haze/
> bh22/wrfout_d03_2006-05-06_12:00:00.nc","r")
> bh23_h = addfile ("/hpc/bluefern/WRF/basit/basit-archive/b-haze/
> bh23/wrfout_d03_2006-06-04_12:00:00.nc","r")
> bh24_b = addfile ("/hpc/bluefern/WRF/basit/basit-archive/b-haze/
> bh24/wrfout_d03_2007-05-26_12:00:00.nc","r")
> bh25_nh = addfile ("/hpc/bluefern/WRF/basit/basit-archive/b-haze/
> bh25/wrfout_d03_2006-06-08_12:00:00.nc","r")
> bh26_nh = addfile ("/hpc/bluefern/WRF/basit/basit-archive/b-haze/
> bh26/wrfout_d03_2006-05-24_12:00:00.nc","r")
> bh27_nh = addfile ("/hpc/bluefern/WRF/basit/basit-archive/b-haze/
> bh27/wrfout_d03_2006-07-14_12:00:00.nc","r")
> bh28_h = addfile ("/hpc/bluefern/WRF/basit/basit-archive/b-haze/
> bh28/wrfout_d03_2001-07-02_12:00:00.nc","r")
> bh29_h = addfile ("/hpc/bluefern/WRF/basit/basit-archive/b-haze/
> bh29/wrfout_d03_2002-06-14_12:00:00.nc","r")
> bh30_h = addfile ("/hpc/bluefern/WRF/basit/basit-archive/b-haze/
> bh30/wrfout_d03_2006-05-30_12:00:00.nc","r")
>
>
> wks = gsn_open_wks ("x11","timeseries") ; open workstation
> pnl_plot = new(4,graphic) ; create a plot
> array
>
> time = (/58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74/)
> time1= (/
> 106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122/)
> time2= (/
> 154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170/)
> time3= (/
> 202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218/)
>
> hour=time
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> pbl_bh22_h = wrf_user_getvar(bh22_h,"PBLH",time)
> pbl_bh23_h = wrf_user_getvar(bh23_h,"PBLH",time)
> pbl_bh24_nh1 = wrf_user_getvar(bh24_b,"PBLH",time)
> pbl_bh24_h1 = wrf_user_getvar(bh24_b,"PBLH",time1)
> pbl_bh24_nh2 = wrf_user_getvar(bh24_b,"PBLH",time2)
> pbl_bh24_h2 = wrf_user_getvar(bh24_b,"PBLH",time3)
> pbl_bh25_nh = wrf_user_getvar(bh25_nh,"PBLH",time)
> pbl_bh26_nh = wrf_user_getvar(bh26_nh,"PBLH",time)
> pbl_bh27_nh = wrf_user_getvar(bh27_nh,"PBLH",time)
> pbl_bh28_h = wrf_user_getvar(bh28_h,"PBLH",time)
> pbl_bh29_h = wrf_user_getvar(bh24_b,"PBLH",time)
> pbl_bh30_h = wrf_user_getvar(bh30_h,"PBLH",time)
>
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> ;;; C A L C U L A T E A V E R A G E PBLH O V E R Auckland D O M A I N
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>
>
> istart = 0
> iend = 16
>
> pbl_bh22_h_avg = new((/17/),float)
> pbl_bh23_h_avg = new((/17/),float)
> pbl_bh24_h1_avg = new((/17/),float)
> pbl_bh24_nh1_avg = new((/17/),float)
> pbl_bh24_h2_avg = new((/17/),float)
> pbl_bh24_nh2_avg = new((/17/),float)
> pbl_bh25_nh_avg = new((/17/),float)
> pbl_bh26_nh_avg = new((/17/),float)
> pbl_bh27_nh_avg = new((/17/),float)
> pbl_bh28_h_avg = new((/17/),float)
> pbl_bh29_h_avg = new((/17/),float)
> pbl_bh30_h_avg = new((/17/),float)
>
>
> do itime = istart,iend
>
> pbl_bh22_h_avg(itime) = avg(pbl_bh22_h(itime,:,:))
> pbl_bh23_h_avg(itime) = avg(pbl_bh23_h(itime,:,:))
> pbl_bh24_nh1_avg(itime) = avg(pbl_bh24_nh1(itime,:,:))
> pbl_bh24_h1_avg(itime) = avg(pbl_bh24_h1(itime,:,:))
> pbl_bh24_nh2_avg(itime) = avg(pbl_bh24_nh2(itime,:,:))
> pbl_bh24_h2_avg(itime) = avg(pbl_bh24_h2(itime,:,:))
> pbl_bh25_nh_avg(itime) = avg(pbl_bh25_nh(itime,:,:))
> pbl_bh26_nh_avg(itime) = avg(pbl_bh26_nh(itime,:,:))
> pbl_bh27_nh_avg(itime) = avg(pbl_bh27_nh(itime,:,:))
> pbl_bh28_h_avg(itime) = avg(pbl_bh28_h(itime,:,:))
> pbl_bh29_h_avg(itime) = avg(pbl_bh29_h(itime,:,:))
> pbl_bh30_h_avg(itime) = avg(pbl_bh30_h(itime,:,:))
>
>
> end do
>
> ;************************************************
> ; plotting parameters
> ;************************************************
> res = True ; plot mods desired
> res@gsnDraw = False ; Don't draw individual plot
> res@gsnFrame = False ; Don't advance frame.
> res@tmXTOn = False ; turn off the top tick marks
> ;res@tmYLMode = "Manual" ; Define own tick mark labels.
> res@tmXBMode = "Explicit" ; Define own tick mark labels.
> res@tmXBLabelsOn =True
> res@tmXBValues = (/
> 58.,59.,60.,61.,62.,63.,64.,65.,66.,67.,68.,69.,70.,71.,72.,73.,74./)
> res@tmXBLabels = (/"5","", "6", "", "7", "", "8", "", "9", "",
> "10", "", "11", "", "12", "", "13"/)
> res@tmYLMajorOutwardLengthF= 0.0 ; set to 0.0 draw minor
> ticks inward
> res@tmYLMinorOutwardLengthF= 0.0 ; set to 0.0 draw minor
> ticks inward
> res@tmXBMajorOutwardLengthF= 0.0 ; set to 0.0 draw minor
> ticks inward
> res@tmXBMinorOutwardLengthF= 0.0 ; set to 0.0 draw minor
> ticks inward
> res@tmYLPrecision = 4 ; Control total number of
> digits incl. decimals
> res@tmXBPrecision = 2 ; Control total number of
> digits incl. decimals
> res@tiXAxisString = "Hour (NZST)" ; X axes label
> res@tmXBTickSpacingF = 2 ; X axis tick marks
> interval, only uses with Manual option
> res@tmXBMinorPerMajor = 2 ; # of minor tick marks per
> major
> res@tmYLTickSpacingF = 300 ; Y axis tick marks
> interval, only uses with Manual option
> res@trYMaxF = 1200 ; X axis max
> res@trYMinF = 0
> ; res@trXMaxF = 16 ; X axis max
> ; res@trXMinF = 0 ; X axis min
> res@tmXBMinorOn = True ; X Minor tick marks is on
> res@tmYLMinorOn = True ; X Minor tick marks is on
>
> res@xyLineColor = "Red"
> res@vpWidthF = 0.35 ; panel width
> res@vpHeightF = 0.39 ; panel height
>
> res@tiYAxisString = "PBL Height (m)" ; (~S~o~N~C)", watts m-2:
> (~N~Wm~S~-2~N~)" Y-axis label;
>
>
> ;-------------------------------------------------------------------------------
> ; R E S O U R C E S
> ;---------------------------------------------------------------------------------
>
> res1=res
> res1@vpXF = 0.1 ; x location
> res1@vpYF = 0.96 ; y location
> res1@xyDashPatterns = 0
>
> res2=res1 ; res1 is red color (hd)
> res2@xyLineColor = "Blue" ; res2 is blue color(nhd)
> res2@xyDashPatterns = 0
>
> res3=res ; res3 is red color (hd)
> res3@vpXF = 0.56 ; x location
> res3@vpYF = 0.96 ; y location
> res4=res3
> res4@xyLineColor = "Blue" ; res4 is blue color(nhd)
>
>
> res5=res ; res5 redcolor hd
> res5@vpXF = 0.1 ; x location
> res5@vpYF = 0.47 ; y location
> res6=res5 ; res6 blue color nhd
> res6@xyLineColor = "Blue"
> res7=res5 ; res 7 redcolor hd
> res7@xyDashPatterns = 16
>
>
> res8=res ; linecolor for res8 will be
> red
> res8@vpXF = 0.56 ; x location
> res8@vpYF = 0.47 ; y location
>
> res9=res8
> res9@xyLineColor = "Blue"
>
> res10=res8 ; linecolor will be red
> res10@xyDashPatterns = 16
>
> res11=res8 ; linecolor will be blue
> res11@xyLineColor = "Blue"
> res11@xyDashPatterns = 16
> ;
> ------------------------------------------------------------------------------------------
>
> plot1 = gsn_csm_xy (wks, hour, pbl_bh23_h_avg, res1) ; create plot
> plot2 = gsn_csm_xy (wks,hour, pbl_bh25_nh_avg , res2) ; create plot
> overlay (plot1 , plot2)
> pnl_plot (0) = plot1
>
>
> plot3 = gsn_csm_xy (wks,hour, pbl_bh22_h_avg , res3) ; create plot
> plot4 = gsn_csm_xy (wks,hour, pbl_bh26_nh_avg , res4) ; create plot
> overlay (plot3 , plot4)
> pnl_plot (1) = plot3
>
> plot5 = gsn_csm_xy (wks,hour, pbl_bh30_h_avg, res5) ; create plot
> plot6 = gsn_csm_xy (wks,hour, pbl_bh27_nh_avg, res6) ; create plot
> plot7 = gsn_csm_xy (wks,hour, pbl_bh28_h_avg, res7) ; create plot
>
> overlay (plot5 , plot6)
> overlay (plot5 , plot7)
> pnl_plot (2) = plot5
>
>
> plot8 = gsn_csm_xy (wks,hour, pbl_bh24_h1_avg , res8) ; create plot
> plot9 = gsn_csm_xy (wks,hour, pbl_bh24_nh1_avg , res9) ; create plot
> plot10 = gsn_csm_xy (wks,hour, pbl_bh24_h2_avg , res10) ; create plot
> plot11 = gsn_csm_xy (wks,hour, pbl_bh24_nh2_avg , res11) ; create plot
>
> overlay(plot8, plot9)
> overlay(plot8, plot10)
> overlay(plot8, plot11)
>
> pnl_plot (3) = plot8
>
> ;***********************************************
> ; legend resources
> ;***********************************************
> lgres = True
> lgres@lgLineColors = (/"Red","Blue"/)
> lgres@lgDashIndex = (/0., 16./) ; line paterns
> lgres@lgLineLabelStrings = (/"",""/)
> lgres@lgLineThicknessF = res@cnLineThicknessF ; legend line
> thickness = contour line thickness
> lgres@lgItemType = "Lines" ; show lines only
> (default)
> lgres@lgLabelFontHeightF = .14 ; set the legend label
> font thickness
> lgres@vpWidthF = 0.10 ; width of legend (NDC)
> - may also be used to inc. or dec. dist
> lgres@vpHeightF = 0.03 ; height of legend
> (NDC)- b/w legend rows + font size
> lgres@lgPerimColor = "Black" ; draw the box perimeter
> in Black
> lgres@lgPerimThicknessF = 1.0 ; thicken the box
> perimeter
> ; lgres@lgBoxLinesOn = False
> lgres@lgPerimOn = False ; don't display
> preimeter box around legend
> ; lgres@pmLegendWidthF = 0.10
> ; lgres@pmLegendHeightF = 0.10
> ; lgres@lgLabelFontHeightF= 0.010 ; chane font height
> ; lgres@@pmLegendDisplayMode = "Always"
> ; lgres@xyExplicitLegendLabels = (/")
>
>
> lgres1 = True
> lgres1@lgLineColors = (/"Red","Blue","Red"/)
> lgres1@lgDashIndex = (/0., 0., 0./) ; line
> paterns
> lgres1@lgLineLabelStrings = (/"","",""/)
> lgres1@lgLineThicknessF = res@cnLineThicknessF ; legend line
> thickness = contour line thickness
> lgres1@lgItemType = "Lines" ; show lines only
> (default)
> lgres1@lgLabelFontHeightF = .14 ; set the legend label
> font thickness
> lgres1@vpWidthF = 0.10 ; width of legend (NDC)
> - may also be used to inc. or dec. dist
> lgres1@vpHeightF = 0.04 ; height of legend
> (NDC)- b/w legend rows + font size
> lgres1@lgPerimColor = "Black" ; draw the box
> perimeter in Black
> lgres1@lgPerimThicknessF = 1.0 ; thicken the box
> perimeter
> ; lgres1@lgBoxLinesOn = False
> lgres1@lgPerimOn = False ; don't display
> preimeter box around legend
> ;lgres1@lgLabelFontHeightF= 0.005
>
>
> lgres2 = True
> lgres2@lgLineColors = (/"Blue","Red","Blue","Red"/)
> lgres2@lgMonoDashIndex = False
> lgres2@lgItemCount = 4
> ; lgres2@cnLineDashPattern = (/0,0,16,16/)
> lgres2@lgDashIndex = (/0,0,16,16/) ; line paterns
> lgres2@lgLineLabelStrings = (/"","","",""/)
> lgres2@lgLineThicknessF = res@cnLineThicknessF ; legend line
> thickness = contour line thickness
> lgres2@lgItemType = "Lines" ; show lines
> only (default)
> lgres2@lgLabelFontHeightF = .14 ; set the legend
> label font thickness
> lgres2@vpWidthF = 0.10 ; width of
> legend (NDC) - may also be used to inc. or dec. dist
> lgres2@vpHeightF = 0.05 ; height of
> legend (NDC)- b/w legend rows + font size
> lgres2@lgPerimColor = "Black" ; draw the box
> perimeter in Black
> lgres2@lgPerimThicknessF = 1.0 ; thicken the
> box perimeter
> ; lgres2@lgBoxLinesOn = False
> lgres2@lgPerimOn = False ; don't display
> preimeter box around legend
> ;lgres2@lgLabelFontHeightF= 0.005
>
>
>
> lbid = gsn_create_legend(wks,2,(/" 6-Jun-2006 (HD)"," 10-Jun-2006
> (NHD)"/),lgres) ; create legend
> amres = True
> amres@amParallelPosF = 0.34 ;
> move legend to the right
> amres@amOrthogonalPosF = -0.43 ; move the legend up
> annoid1 = gsn_add_annotation(plot1,lbid,amres) ; add legend to
> plot
>
>
> lbid2 = gsn_create_legend(wks,2,(/" 8-May-2006(HD)"," 26-
> May-2006(NHD)"/),lgres) ; create legend
> amres2 = True
> amres2@amParallelPosF = 0.34 ;
> move legend to the right
> amres2@amOrthogonalPosF = -0.43 ; move the legend up
> annoid2 = gsn_add_annotation(plot3,lbid2,amres2) ; add legend to
> plot
>
>
> lbid3 = gsn_create_legend(wks,3,(/" 1-Jun-2006(HD)"," 16-
> Jul-2006(NHD)"," 4-Jul-2001(HD)"/),lgres1) ; create legend
> amres3 = True
> amres3@amParallelPosF = 0.34 ;
> move legend to the right
> amres3@amOrthogonalPosF = -0.43 ; move the
> legend up
> annoi3 = gsn_add_annotation(plot5,lbid3,amres3) ; add legend to
> plot
>
>
> lbid4 = gsn_create_legend(wks,4,(/"28-May-2006(NHD)","29-
> May-2006(HD)","30-May-2006(NHD)","31-
> May-2006(HD)"/),lgres2) ; create legend
> amres4 = True
> amres4@amParallelPosF = 0.34 ;
> move legend to the right
> amres4@amOrthogonalPosF = -0.43 ; move the
> legend up
> annoid4 = gsn_add_annotation(plot8,lbid4,amres4) ; add legend to
> plot
>
> ;***********************************************
> ; Panel the WRF plots
> ;***********************************************
>
> resP= True
> ; resP@gsnDraw = False ; Don't draw individual plot
> resP@gsnFrame = False ; don't advance
> panel plot
> resP@gsnPanelLabelBar = True ; time,
> pbl_bh30_h_avg; add common colorbar
> ; resP@gsnPanelBottom = 0.05 ; add space at
> bottom
> resP@gsnMaximize = False ; maximize plots
> resP@vpWidthF = 0.36 ; panel width
> resP@vpHeightF = 0.36 ; panel height
> resP@gsnPanelYWhiteSpacePercent = 6 ; Add white space b/w
> plots
> resP@gsnPanelXWhiteSpacePercent = 6 ; Add white space b/w
> plots
> resP@gsnPanelScalePlotIndex = 1
>
> resP@gsnPanelFigureStrings= (/"a) HNW","b) HE","c) HSE","d) H"/) ;
> add strings to panel
> resP@amJust = "TopLeft"
> res@txFontHeightF = .24
> gsn_panel(wks,pnl_plot,(/2,2/),resP) ; now draw as
> one plot
>
>
> frame(wks)
>
> end
>
> This email may be confidential and subject to legal privilege, it may
> not reflect the views of the University of Canterbury, and it is not
> guaranteed to be virus free. If you are not an intended recipient,
> please notify the sender immediately and erase all copies of the
> message
> and any attachments.
>
> Please refer to http://www.canterbury.ac.nz/emaildisclaimer for more
> information.
>
> _______________________________________________
> 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 Tue Feb 8 08:08:38 2011

This archive was generated by hypermail 2.1.8 : Fri Feb 11 2011 - 16:11:42 MST