Re: Legend and contour plot

From: Mary Haley (haley AT XXXXXX)
Date: Tue Feb 05 2002 - 20:59:43 MST

  • Next message: Christian Page: "Re: Legend and contour plot"

    >
    >
    > Hi,
    >
    > Is there a way in NCL to overlay two 2D fields in a contour plot (let's say
    > the 1st field in solid lines and the second in dashed lines) and have a
    > legend at the top showing 2 items, one for each field?
    >
    > All I could get is a legend showing all the line levels of the fields.
    >
    > Thanks,
    >
    > Christian Page
    > page AT sca.uqam.ca http://meteocentre.com/

    Christian,

    There are a couple of ways you can do this, and I'll give you an
    example of one of them. I wrote a little procedure that creates and
    draws a legend (gsn_legend_ndc), and added it to gsn_code.ncl, so you
    will need to download the latest version of gsn_code.ncl (more on this
    in a bit).

    The example below is uses data that is all on the same lat/lon grid,
    so by using coordinate arrays provided in the netCDF file, it knows
    how to do the overlay properly. (This is all done behind the scenes in
    the gsn_csm_contour routine.)

    This example basically creates two separate contour plots, overlays
    one on the other, draws the overlaid plots, and then draws a legend on
    top.

    If you want to draw the legend *inside* the plot area, then you can do
    all of this by using gsn_add_polyline and gsn_add_text. This will then
    allow you to panel the plots.

    To run the example below, first download the latest gsn_code.ncl
    and gsn_csm.ncl from:

       http://ngwww.ucar.edu/ngdoc/ng/ug/ncl/gsun/scripts/gsn_code.ncl
       http://ngwww.ucar.edu/ngdoc/ng/ug/ncl/gsun/scripts/gsn_csm.ncl

    Here's the example:

    load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
    load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"

    begin

     diri = "$NCARG_ROOT/lib/ncarg/data/cdf/" ; directory
     fili = "contour.cdf" ; file name
     
     f = addfile (diri+fili , "r") ; add file
     T1 = f->T(0,0,:,:) ; get 1st time and level
     T5 = f->T(4,0,:,:) ; get 5th time and level

     wks = gsn_open_wks ("x11", "legend" ) ; open workstation

     res = True
     res@vpYF = 0.85
     res@gsnDraw = False
     res@gsnFrame = False

     res@cnLineColor = "Red" ; red contour lines
     res@cnLineDashPattern = 0 ; solid lines
     plot1 = gsn_csm_contour(wks, T1, res )

     res@cnLineColor = "Blue" ; blue contour lines
     res@cnLineDashPattern = 12 ; dashed lines
     res@cnLineThicknessF = 2.
     res@gsnRightString = ""
     res@gsnLeftString = ""
     res@gsnCenterString = ""

     plot5 = gsn_csm_contour(wks, T5, res )

     overlay(plot1,plot5) ; Overlay plots; plot1 now
                                                  ; contains the overlaid plot5.
     draw(plot1) ; Draw base plot.
     
    ;
    ; Set some legend resources.
    ;
     lgres = True
     lgres@lgLineColors = (/"red","blue"/) ; line colors for legend lines
     lgres@vpWidthF = 0.8 ; width of legend (NDC)
     lgres@vpHeightF = 0.1 ; height of legend (NDC)
     lgres@lgPerimOn = False ; turn off perimeter
     lgres@lgDashIndexes = (/0,12/) ; dash indexes
     lgres@lgLineLabelStrings = (/"",""/) ; no labels in lines

    ;
    ; Draw the legend, indicating the number of items, a label for each
    ; item, and the X, Y position of the legend in NDC coordinates.
    ;
     gsn_legend_ndc(wks,2,(/"time=0","time=4"/),0.1,0.15,lgres)

     frame(wks)

    end



    This archive was generated by hypermail 2b29 : Tue Feb 05 2002 - 21:04:11 MST