Re: gsn_add_polymaker

From: Mary Haley <haley_at_nyahnyahspammersnyahnyah>
Date: Wed, 2 Jan 2008 10:23:56 -0700

On Jan 2, 2008, at 3:09 AM, jimmyc_at_iastate.edu wrote:

> All-
>
> I am trying to follow the example script WRF_track_1.ncl to add
> polymarkers to a base map using WRF model data.
>
> I am looping over time and the number of polymarkers but when I set
> gsnDraw and gsnFrame to False it overlays on each plot.
>
> I am also having a problem where the whole globe is being plotted
> rather than my domain.
>
> I am doing way more than this in the script but here is the relevant
> code:

Hi James,

 From this code snippet, I think there are a few things that could be
fixed:

1. WRF_map_c is a procedure that adds resources to a resource list.
You want to call this procedure before you call gsn_csm_map, or
otherwise your resources won't be set properly. I think this is why you
are seeing the whole domain. WRF_map_c should be setting the domain for
you.

2. The loop that's being used to add the markers can probably be
cleaned up. The way you have the looping and frame calls set up, you
are adding one group of markers, then drawing the plot and advancing
the frame. Then, you are adding more markers to the same plot, and
advancing the frame again.

It sounds like your intention is to add the markers to a new base map
everytime? Also, you don't need to add one polymarker at a time, unless
each marker needs to be different somehow (like color or size). Since
your markers are all the same, then you can make your code a little
faster by removing that inner do loop. Here's how I think your code
snippet needs to be rewritten, but I'm not positive this is what you
want. Hopefully it will help you get started:

  maps = new(9,graphic)
  WRF_map_c(f,resa,0)

;************************************************
; Allocate array to store plots: specify time step
;************************************************
  dot = new (9, "graphic")
;************************************************
; loop over each forecast
;************************************************
      n = 0
      do nt=9,17
        maps(n) = gsn_csm_map(wksa,resa)
; plts(n) =
gsn_csm_contour_map(wks,data(0,nt,:,:),res)
       in = index(0,nt)-1
       dot(n) =
gsn_add_polymarker(wksa,maps(n),cenf(1,nt,0:in),cenf(0,nt,0:in),gsresa)
       draw( maps(n))
       frame(wksa)
        n = n + 1
      end do

--Mary

>
> ;*************************************************
> ; WRF: creat basic x-y plots. Simple variations
> ;************************************************
> 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/WRF_contributed.ncl" external
> EX01 "./object_new.so"
>
> begin
> ;************************************************
> ; open file and read in data
> ;************************************************
> f = addfile ("myj_noah.nc", "r")
> ;************************************************
> ; Read all the times. Convert to numeric units for plottin.
> ;************************************************
> Times = f->Times ; Times is of type character
> Time = WRF_Times2Udunits_c(Times, 0) ; convert to "hours since"
> lat = f->XLAT(0,:,:)
> lon = f->XLONG(0,:,:)
>
> x = 0
> Tim = new((/24/),double)
> do nt=4,96,4
> Tim(x) = Time(nt)
> x = x + 1
> end do
> printVarSummary(Tim)
>
> ;************************************************
> ; Import time series of perturbation geopotential (PH)
> ; at a (arbitrarily) specified grid point
> ;************************************************
> rnf = f->RAINNC
> ratef = new((/24,224,299/),float)
> rng = g->RAINNC
> rateg = new((/24,224,299/),float)
> rnh = h->RAINNC
> rateh = new((/24,224,299/),float)
> rci = i->APCP ; (Time, bottom_top, south_north,
> west_east)
> ratei = new((/24,224,299/),float)
> ratef_at_description = "Precip. Rate"
> ratef_at_units = "mm/hr"
> ratef!0 = "Time"
> ratef!1 = "south_north"
> ratef!2 = "west_east"
>
> x = 0
> do nt=4,96,4
> if ( nt .gt. 0)then
> ratef(x,:,:) = ( rnf(Time|nt,south_north|:,west_east|:) -
> rnf(Time|nt-4,south_north|:,west_east|:))
> ; rateg(x,:,:) = (rcg(Time|nt,south_north|:,west_east|:) -
> rcg(Time|nt-4,south_north|:,west_east|:) +
> rng(Time|nt,south_north|:,west_east|:) -
> rng(Time|nt-4,south_north|:,west_east|:))
> ; rateh(x,:,:) = (rch(Time|nt,south_north|:,west_east|:) -
> rch(Time|nt-4,south_north|:,west_east|:) +
> rnh(Time|nt,south_north|:,west_east|:) -
> rnh(Time|nt-4,south_north|:,west_east|:))
> x = x+1
> end if
> end do
>
> ; ratei = rci
>
> dx = 4.0
> thresh = 1.0
> xx = 500
> yy = 299
> x = 299
> y = 224
>
> newa = new((/224,299/),float)
> var = new((/224,299/),float)
> data = new((/24,24,224,299/),float)
> ceni = new((/500/),float)
> cenj = new((/500/),float)
> cenf = new((/2,24,500/),float)
> index = new((/2,24/),integer)
> z = 0
>
>
> do nt=0,23
> var(:,:) = ratef(nt,:,:)
> EX01::object(var,thresh,x,y,yy,xx,lat,lon,newa,ceni,cenj,z)
>
> data(0,nt,:,:) = newa(:,:)
> cenf(0,nt,:) = ceni(:)
> cenf(1,nt,:) = cenj(:)
> index(0,nt) = z
> end do
>
> ;************************************************
> ; create plots: Three slight variations.
> ;************************************************
> wks = gsn_open_wks("ps" ,"over") ; ps,pdf,x11,ncgm,eps
>
> res = True ; plot mods desired
> res_at_gsnMaximize = True ; uncomment to maximize
> size
> ; res_at_tiMainString = lat+"N "+fabs(lon)+"W"
> res_at_xyMarkLineMode = "MarkLines"
> res_at_xyMarkers = (/1,6,11,16/)
> res_at_pmLegendDisplayMode = "Always"
> res_at_pmLegendSide = "Top" ; Change location
> of
> res_at_pmLegendParallelPosF = .85 ; move units right
> res_at_pmLegendOrthogonalPosF = -0.8 ; more neg = down
>
> res_at_pmLegendWidthF = 0.12 ; Change width and
> res_at_pmLegendHeightF = 0.25 ; height of legend.
> res_at_lgLabelFontHeightF = .02 ; change font
> height
> res_at_lgPerimOn = False ; no box around
> ; labels for the legend
> res_at_xyExplicitLegendLabels = (/"MYJ","YSU","MRF","OBS"/)
>
> plot = gsn_csm_xy(wks,Tim,over,res)
> plot = gsn_csm_xy(wks,Tim,area,res)
>
> end if
> ;plot a shaded plot of object numbers
>
> ;************************************************
> ; create plots ;************************************************
> ; wks = gsn_open_wks("ps" ,"object") ; ps,pdf,x11,ncgm,eps
> wksa = gsn_open_wks("ps" ,"objects") ; ps,pdf,x11,ncgm,eps
> ; gsn_define_colormap(wks,"BlAqGrYeOrReVi200") ; select color map
> gsn_define_colormap(wksa,"BlAqGrYeOrReVi200") ; select color map
>
> ;************************************************
> ; Use WRF_contributed procedure to set map resources
> ;************************************************
> resa = True
> resa_at_tiMainString = "objects"
> resa_at_gsnMaximize = True
> resa_at_gsnFrame = False
> resa_at_gsnDraw = False
>
> gsresa = True
> gsresa_at_gsMarkerIndex = 16
> cols = (/5,160,40/)
> gsresa_at_gsMarkerColor = cols(0)
>
> dot = new ((/9,500/), "graphic")
> ;************************************************
> ; loop over each forecast
> ;************************************************
> n = 0
> do nt=9,17
> ; plts(n) =
> gsn_csm_contour_map(wks,data(0,nt,:,:),res)
> do in=0,index(0,nt)-1
> dot(n,in) =
> gsn_add_polymarker(wksa,plot,cenf(1,nt,in),cenf(0,nt,in),gsresa)
> end do
> draw(wksa)
> frame(wksa)
> n = n + 1
> end do
> ; plts = new ((/9/), "graphic") ; 1d array to hold plots
> dot = new ((/9,500/), "graphic")
> ;************************************************
> ; loop over each forecast
> ;************************************************
> n = 0
> do nt=9,17
> ; plts(n) =
> gsn_csm_contour_map(wks,data(0,nt,:,:),res)
> do in=0,index(0,nt)-1
> dot(n,in) =
> gsn_add_polymarker(wksa,plot,cenf(1,nt,in),cenf(0,nt,in),gsresa)
> end do
> draw(wksa)
> frame(wksa)
> n = n + 1
> end do
>
> end
>
> --
> James Correia, Jr. PhD.
> Email: jimmyc @ iastate.edu
> Email: jimmyc42 @ gmail.com
> Web: http://bruce.agron.iastate.edu/jimmyc/
> *********************************************
>
> "Wisdom. Strength. Courage. Generosity. Each of us are born with one of
> these. We must find the other three inside of us."
> from "Into the West"
> _______________________________________________
> ncl-talk mailing list
> ncl-talk_at_ucar.edu
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk

_______________________________________________
ncl-talk mailing list
ncl-talk_at_ucar.edu
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Wed Jan 02 2008 - 10:23:56 MST

This archive was generated by hypermail 2.2.0 : Thu Jan 03 2008 - 10:50:41 MST