Cannot draw vector properly in radar (r,theta) plot

From: Xiaomin Chen <xiaominc_at_nyahnyahspammersnyahnyah>
Date: Wed May 07 2014 - 02:27:10 MDT

Hi, there!

I'm trying to make a X-Y vector plot in polar coordinates (r,theta space)
and my data is in corresponding polar coordinates with the size of 101*360
(r*theta).

I've tried to attach the two-dimensional arrays documenting the data
position in the catersian corrdinate to attributes "vfYArray" and
"vfXArray" , similar to "sfXArray" in scaler field in the NCL radar plot
sample. Note that the vfXArray or vfYArray must be two-dimensional when
drawing vector in NCL.

 I run the ncl script and no error information is reported. However, the
x-y coordinate seems not right and there are no Xtick or Ytick shown in the
output figure. In addition, the spatial mapping from the data to r-theta
coordinate are not right. I've also tried to change both the contour and
vector coordinate array to be 2-dimensional, but the result turns out to be
a image in a rectangular box (should be a circle shape).

So, does anyone ever succeed to draw a vector plot ( gsn_csm_vector) in
radar plot? I'll appreciate that if you can share your code. I guess the
problem is in the 2-D coordinate array.

Thanks!
Xiaomin

The code are here:
 ;**************************************************************
; radar_5.ncl
;
; Concepts illustrated:
; - Drawing four radar plots in a page, each using different colormap
; - Plotting radar (r,theta) data, treat like station data.
; - Adding radar grid circles and lines with polylines
; - Reading binary data using "cbinread"
; Example script to produce plots for a WRF real-data run,
; with the ARW coordinate dynamics option.
;**************************************************************
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
;=============== Read Azimutal mean Variables ====================
ntimes =37
lm =101
ln=361 ;azimuthal points
;=============================================================
fout1 = "./ASYM/VT_VR_W_PV_PRECIP_aym.dat"
setfileoption("bin","ReadByteOrder","BigEndian")
vta = fbindirread(fout1,0,(/ntimes-1,ln*lm/),"float")
vra = fbindirread(fout1,1,(/ntimes-1,ln*lm/),"float")
dbza = fbindirread(fout1,2,(/ntimes-1,ln*lm/),"float")

do it =1,ntimes-2

  uprime = new((/ln,lm/),"float")
  vprime = new((/ln,lm/),"float")
   x1 = new((/ln,lm/),"float")
   y1 = new((/ln,lm/),"float")
   dr =1.0
  deg2rad = 0.017453292519943
   do tt=0,ln-1 ;theta->from due north
    rad=tt*deg2rad
    sin_=sin(rad)
    cos_=cos(rad)
    do rr=0,lm-1 ;r
      x1(tt,rr)=sin_*(rr*dr)
      y1(tt,rr)=cos_*(rr*dr)
      uprime(tt,rr)=sin_*vra(it,tt*101+rr)-cos_*vta(it,tt*101+rr)
      vprime(tt,rr)=sin_*vta(it,tt*101+rr)+cos_*vra(it,tt*101+rr)
    end do
  end do

 ; Plotting options for Wind Vectors
  type = "x11"
; type = "pdf"
  wks=gsn_open_wks(type,"Asy_Plane_panels")
  vres = True
  vres@gsnDraw = False
  vres@gsnFrame = False
  ;---Set coordinate arrays
  vres@vfXArray = x1 ;Vector Field Attribute
  vres@vfYArray = y1
    vres@gsnRightString = ""
    vres@gsnLeftString = ""
  vres@vcGlyphStyle = "LineArrow" ;Set the type of Vector
    vres@vcLineArrowThicknessF = 1.5
    vres@vcRefMagnitudeF = 15.0
    vres@vcRefLengthF = 0.045
;============= Reference Bar Setting =======================
    vres@vcRefAnnoOrthogonalPosF =-0.22 ;Reference Bar position Vertical
    vres@vcRefAnnoParallelPosF = 0.997 ;Reference Bar horizontal position
     vres@vcRefAnnoFontHeightF = 0.015
;========================================================
    vres@vcMinDistanceF = 0.017

vector = gsn_csm_vector(wks,uprime,vprime,vres)

;========= Draw DBZ contour ==========================
  res = True
  res@gsnDraw = False
  res@gsnFrame = False
  res@gsnMaximize = True

  res@cnFillOn = True
  res@cnLinesOn = False
; res@cnFillMode = "RasterFill"
; res@gsnSpreadColors = True
  res@cnLevelSelectionMode = "ManualLevels"

  res@lbOrientation = "Vertical"
  res@lbRasterFillOn = False
; res@lbBoxLinesOn = False

;---------read data, (ln,lm) means (theta,r) ->(361,101)--------------
;-------------make the 1D XArray and YArray------------------------
  x = new(ln*lm,"float")
  y = new(ln*lm,"float")
  deg2rad = 0.017453292519943
  do tt=0,ln-1 ;theta->from due north
    rad=tt*deg2rad
    sin_=sin(rad)
    cos_=cos(rad)
    do rr=0,lm-1 ;r
      x(tt*101+rr)=sin_*rr*dr
      y(tt*101+rr)=cos_*rr*dr
    end do
  end do

;---Set coordinate arrays
  res@sfXArray = x
  res@sfYArray = y
;----ploting with local resources and colormap for each 1 of 4--------
; ------ Pressure anomaly'
  res@cnFillDrawOrder = "Predraw"
  res@gsnLeftString = "REF"
  res@gsnRightString = "dBz"
  res@cnFillPalette = "radar"
 ; res@cnSpanFillPalette = True
  res@cnMinLevelValF = -9.
  res@cnMaxLevelValF =4.
  res@cnLevelSpacingF = 1.

  plot = gsn_csm_contour(wks,dbza(it,:),res)

  overlay(plot,vector)

draw(plot)
frame(wks)

  end do
end

_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Wed May 7 02:27:24 2014

This archive was generated by hypermail 2.1.8 : Fri May 09 2014 - 15:23:18 MDT