[ncl-talk] Add text and polymarkers on panel plots
Tabish Ansari
tabishumaransari at gmail.com
Fri Apr 26 07:25:13 MDT 2019
Hi
I was able to create the desired panel plots with the markers and text -
thanks!
Here's the script:
*load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"load
"$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"beginncol = 11 ; COLUMNS
CORRESPOND TO THE 11 DAYS HEREdata =
readAsciiTable("/home/tabish/Emulation/EmulPreds_responsesurface_Run8.csv",
ncol, "float", 1); THIS WILL IGNORE THE 1ST ROW WHICH IS
HEADERdata at _FillValue = -999print("table read-in
successfully")printVarSummary(data);TRANSFORMING 14400X1 STRUCTURE TO
120X120 STRUCTURE FOR CONTOUR PLOTc=0a = new((/120,120/),float);MATRIX TO
HOLD VALUES FOR 24TH OCTb = new((/120,120/),float);MATRIX TO HOLD VALUES
FOR 30TH OCTdo i=0,119 do j=0,119 a(i,j) = data(c,3);THIS MATRIX STORES
VALUES FOR 24TH OCT b(i,j) = data(c,9);THIS MATRIX STORES VALUES FOR 30TH
OCT c = c+1 end doend do;ATTACHING 0-120% COORDINATE ARRAYS x =
ispan(0,119,1) y = ispan(0,119,1) a!0 = "x" a!1 = "y" a&x = x a&y =
y b!0 = "x" b!1 = "y" b&x = x b&y = y wks =
gsn_open_wks("x11","30OctRS_Beijing-IR_vs_Beijing-TP") ; Send graphics to
PNG file; Set up resources. res = True res at gsnDraw =
False ; don't draw res at gsnFrame =
False ; don't advance frame
res at gsnMaximize = False res at cnFillOn = True ;
Turn on contour fill res at cnFillPalette = "BlGrYeOrReVi200" ;
Set color map ; res at cnFillPalette = "WhiteBlue" ; Set color map
res at tiYAxisFontHeightF = 0.018 res at tiXAxisFontHeightF = 0.018
res at tiYAxisString = "Beijing(Pow+Tran)" res at pmTitleZone = 3
res at tiXAxisString = "Beijing(Ind+Res)" ;res at cnFillMode =
"RasterFill" res at cnLinesOn = False res at lbOrientation =
"vertical" res at tmXBMajorOutwardLengthF = 0.0 ; draw
tickmarks inward res at tmXBMinorOutwardLengthF = 0.0 ; draw
minor ticks inward tmXTMajorOutwardLengthF = 0.0 ; draw
tickmarks inward res at tmXTMinorOutwardLengthF = 0.0 ; draw
minor ticks inward res at tmYLMajorOutwardLengthF = 0.0 ; draw
tickmarks inward res at tmYLMinorOutwardLengthF = 0.0 ; draw
minor ticks inward res at tmYRMajorOutwardLengthF = 0.0 ; draw
tickmarks inward res at tmYRMinorOutwardLengthF = 0.0 ; draw
minor ticks inward plot1 = gsn_csm_contour(wks,a,res) ; Create filled
contours plot2 = gsn_csm_contour(wks,b,res) ; Create filled
contours;---Draw text and markers at data locations txres =
True mkres = True txres at txFontHeightF = 0.01
txres at txJust = "TopCenter" ; text will be drawn under the marker
mkres at gsMarkerIndex = 16 ; filled circle;ROUNDING OFF THE PM2.5 VALUES FOR
CLEAN PRINTINGa = round(a,0)b = round(b,0)dumpoly1 =
new(25,graphic)dumpoly2 = new(25,graphic)dumtext1 =
new(25,graphic)dumtext2 = new(25,graphic)c=0; counter variable for dummy
variables do j=0,100,20 do i=0,100,20 if((i.gt.0).and.(j.gt.0))
then print(i+","+j);
gsn_polymarker(wks,plot1,x(i-1),y(j-1),mkres); gsn_text(wks,plot1,"
~C~"+a(j-1,i-1),x(i-1),y(j-1),txres) dumpoly1(c) =
gsn_add_polymarker(wks,plot1,x(i-1),y(j-1),mkres) dumtext1(c) =
gsn_add_text(wks,plot1," ~C~"+a(j-1,i-1),x(i-1),y(j-1),txres)
dumpoly2(c) = gsn_add_polymarker(wks,plot2,x(i-1),y(j-1),mkres)
dumtext2(c) = gsn_add_text(wks,plot2,"
~C~"+b(j-1,i-1),x(i-1),y(j-1),txres) c = c+1 end if end do
end do;draw(plot2);
frame(wks);************************************************; create
panel;************************************************resP =
TrueresP at gsnPanelYWhiteSpacePercent =
0.0gsn_panel(wks,(/plot1,plot2/),(/1,2/),resP) ; now draw as
one plotend*
Cheers
Tabish
Tabish U Ansari
PhD student, Lancaster Environment Center
Lancaster Univeristy
Bailrigg, Lancaster,
LA1 4YW, United Kingdom
On Fri, 26 Apr 2019 at 14:16, Tabish Ansari <tabishumaransari at gmail.com>
wrote:
> Hi Adam,
>
> Thanks for pointing me to the right functions.
> The gsn_add* functions throw a return value which needs to be stored in a
> uniquely named variable each time.
> As you can see in my script that I want to draw the polymarkers and attach
> the text at every 10th grid point in the 2D-array (It's 120x120 grids).
> I'm able to draw them using gsn_text and gsn_polymarker but not using the
> corresponding gsn_add* functions. NCL doesn't give any error, but the
> polymarkers and text aren't printed.
>
> Here's my updated script:
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> *load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"load
> "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"beginncol = 11 ; COLUMNS
> CORRESPOND TO THE 11 DAYS HEREdata =
> readAsciiTable("/home/tabish/Emulation/EmulPreds_responsesurface_Run8.csv",
> ncol, "float", 1); THIS WILL IGNORE THE 1ST ROW WHICH IS
> HEADERdata at _FillValue = -999print("table read-in
> successfully")printVarSummary(data);TRANSFORMING 14400X1 STRUCTURE TO
> 120X120 STRUCTURE FOR CONTOUR PLOTc=0a = new((/120,120/),float);MATRIX TO
> HOLD VALUES FOR 24TH OCTb = new((/120,120/),float);MATRIX TO HOLD VALUES
> FOR 30TH OCTdo i=0,119 do j=0,119 a(i,j) = data(c,3);THIS MATRIX STORES
> VALUES FOR 24TH OCT b(i,j) = data(c,9);THIS MATRIX STORES VALUES FOR 30TH
> OCT c = c+1 end doend do;ATTACHING 0-120% COORDINATE ARRAYS x =
> ispan(0,119,1) y = ispan(0,119,1) a!0 = "x" a!1 = "y" a&x = x a&y =
> y b!0 = "x" b!1 = "y" b&x = x b&y = y wks =
> gsn_open_wks("x11","30OctRS_Beijing-IR_vs_Beijing-TP") ; Send graphics to
> PNG file; Set up resources. res = True
> res at gsnFrame = False ; Turn off so we can add markers
> and text res at gsnMaximize = False res at cnFillOn =
> True ; Turn on contour fill res at cnFillPalette =
> "BlGrYeOrReVi200" ; Set color map ; res at cnFillPalette =
> "WhiteBlue" ; Set color map res at tiYAxisFontHeightF = 0.018
> res at tiXAxisFontHeightF = 0.018 res at tiYAxisString =
> "Beijing(Pow+Tran)" res at pmTitleZone = 3 res at tiXAxisString =
> "Beijing(Ind+Res)" ;res at cnFillMode = "RasterFill"
> res at cnLinesOn = False res at lbOrientation = "vertical"
> res at tmXBMajorOutwardLengthF = 0.0 ; draw tickmarks inward
> res at tmXBMinorOutwardLengthF = 0.0 ; draw minor ticks inward
> tmXTMajorOutwardLengthF = 0.0 ; draw tickmarks inward
> res at tmXTMinorOutwardLengthF = 0.0 ; draw minor ticks inward
> res at tmYLMajorOutwardLengthF = 0.0 ; draw tickmarks inward
> res at tmYLMinorOutwardLengthF = 0.0 ; draw minor ticks inward
> res at tmYRMajorOutwardLengthF = 0.0 ; draw tickmarks inward
> res at tmYRMinorOutwardLengthF = 0.0 ; draw minor ticks inward;
> plot1 = gsn_csm_contour(wks,a,res) ; Create filled contours plot2 =
> gsn_csm_contour(wks,b,res) ; Create filled contours;---Draw text and
> markers at data locations txres = True mkres
> = True txres at txFontHeightF = 0.01 txres at txJust = "TopCenter" ;
> text will be drawn under the marker mkres at gsMarkerIndex = 16 ; filled
> circle;ROUNDING OFF THE PM2.5 VALUES FOR CLEAN PRINTINGa = round(a,0)b =
> round(b,0)dumpoly1 = new(25,graphic)dumpoly2 = new(25,graphic)dumtext1 =
> new(25,graphic)dumtext2 = new(25,graphic)c=0; counter variable for dummy
> variables do j=0,100,20 do i=0,100,20 if((i.gt.0).and.(j.gt.0))
> then print(i+","+j);
> gsn_polymarker(wks,plot1,x(i-1),y(j-1),mkres); gsn_text(wks,plot1,"
> ~C~"+a(j-1,i-1),x(i-1),y(j-1),txres) dumpoly2(c) =
> gsn_add_polymarker(wks,plot2,x(i-1),y(j-1),mkres) dumtext2(c) =
> gsn_add_text(wks,plot2," ~C~"+b(j-1,i-1),x(i-1),y(j-1),txres) c =
> c+1 end if end do end
> do frame(wks);************************************************; create
> panel;************************************************;resP =
> True;resP at gsnPanelYWhiteSpacePercent =
> 0.0;gsn_panel(wks,(/plot1,plot2/),(/1,2/),resP) ; now draw as
> one plotend*
>
> Cheers,
>
> Tabish
>
> Tabish U Ansari
> PhD student, Lancaster Environment Center
> Lancaster Univeristy
> Bailrigg, Lancaster,
> LA1 4YW, United Kingdom
>
>
> On Thu, 25 Apr 2019 at 19:00, Adam Phillips <asphilli at ucar.edu> wrote:
>
>> Hi Tabish,
>> If you are adding polymarkers/text to plots that are being paneled, you
>> have to use the gsn_add_polymarker/gsn_add_text functions due to
>> limitations with gsn_text/gsn_polymarker. See the documentation for the two
>> add functions here:
>> http://www.ncl.ucar.edu/Document/Graphics/Interfaces/gsn_add_text.shtml
>>
>> http://www.ncl.ucar.edu/Document/Graphics/Interfaces/gsn_add_polymarker.shtml
>> Adam
>>
>> On Thu, Apr 25, 2019 at 11:21 AM Tabish Ansari <
>> tabishumaransari at gmail.com> wrote:
>>
>>> Hi
>>>
>>> I'm able to add text and polymarkers of separate plots but not able to
>>> panel them properly. The text and polymarkers are being added on the
>>> original plots and then a panel is being displayed on top of that without
>>> the text and polymarkers.
>>>
>>> Here's my code:
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> *load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"load
>>> "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"beginncol = 2 ; THE TWO
>>> COLUMNS REPRESENT 2 DAYS: 24TH AND 30TH OCTOBERdata =
>>> readAsciiTable("/home/tabish/Emulation/EmulPreds_responsesurface_Run2.csv",
>>> ncol, "float", 1); THIS WILL IGNORE THE 1ST ROW WHICH IS
>>> HEADERdata at _FillValue = -999print("table read-in
>>> successfully")printVarSummary(data);TRANSFORMING 144X1 STRUCTURE TO 12X12
>>> STRUCTURE FOR CONTOUR PLOTc=0a = new((/12,12/),float);MATRIX TO HOLD VALUES
>>> FOR 24TH OCTb = new((/12,12/),float);MATRIX TO HOLD VALUES FOR 30TH OCTdo
>>> i=0,11 do j=0,11 a(i,j) = data(c,0) b(i,j) = data(c,1) c = c+1 end doend
>>> do;ROUNDING OFF THE PM2.5 VALUES FOR CLEAN PRINTINGa = round(a,0)b =
>>> round(b,0);ATTACHING 0-120% COORDINATE ARRAYS x = ispan(0,110,10) y
>>> = ispan(0,110,10) a!0 = "x" a!1 = "y" a&x = x a&y = y b!0 = "x" b!1 =
>>> "y" b&x = x b&y = y wks = gsn_open_wks("x11","RS") ; Send graphics to
>>> PNG file; Set up resources. res = True
>>> res at gsnFrame = False ; Turn off so we can add markers
>>> and text res at gsnMaximize = False res at cnFillOn =
>>> True ; Turn on contour fill res at cnFillPalette = "amwg" ;
>>> Set color map res at tiYAxisFontHeightF = 0.018 res at tiXAxisFontHeightF =
>>> 0.018 res at tiYAxisString = "Near neighbourhood (Ind+pow+res+tran)"
>>> res at pmTitleZone = 3 res at tiXAxisString = "Beijing
>>> (Ind+pow+res+tran)" res at cnFillMode = "RasterFill"
>>> res at cnLinesOn = False res at lbOrientation = "vertical"
>>> res at tmXBMajorOutwardLengthF = 0.0 ; draw tickmarks inward
>>> res at tmXBMinorOutwardLengthF = 0.0 ; draw minor ticks inward
>>> tmXTMajorOutwardLengthF = 0.0 ; draw tickmarks inward
>>> res at tmXTMinorOutwardLengthF = 0.0 ; draw minor ticks inward
>>> res at tmYLMajorOutwardLengthF = 0.0 ; draw tickmarks inward
>>> res at tmYLMinorOutwardLengthF = 0.0 ; draw minor ticks inward
>>> res at tmYRMajorOutwardLengthF = 0.0 ; draw tickmarks inward
>>> res at tmYRMinorOutwardLengthF = 0.0 ; draw minor ticks inward
>>> ;res at tmXBMode = "Explicit" ;res at tmXBValues = ispan(0,120,10)
>>> plot1 = gsn_csm_contour(wks,a,res) ; Create filled contours plot2 =
>>> gsn_csm_contour(wks,b,res) ; Create filled contours;---Draw text and
>>> markers at data locations txres = True mkres
>>> = True txres at txFontHeightF = 0.01 txres at txJust = "TopCenter" ;
>>> text will be drawn under the marker mkres at gsMarkerIndex = 16 ; filled
>>> circle do j=0,11 do i=0,11
>>> gsn_polymarker(wks,plot1,x(i),y(j),mkres) gsn_text(wks,plot1,"
>>> ~C~"+a(j,i),x(i),y(j),txres)
>>> gsn_polymarker(wks,plot2,x(i),y(j),mkres) gsn_text(wks,plot2,"
>>> ~C~"+b(j,i),x(i),y(j),txres) end do end do;
>>> frame(wks);************************************************; create
>>> panel;************************************************resP =
>>> True;resP at gsnPanelYWhiteSpacePercent =
>>> 0.0gsn_panel(wks,(/plot1,plot2/),(/1,2/),resP) ; now draw as
>>> one plotend*
>>>
>>>
>>> Cheers,
>>>
>>> Tabish
>>> Tabish U Ansari
>>> PhD student, Lancaster Environment Center
>>> Lancaster Univeristy
>>> Bailrigg, Lancaster,
>>> LA1 4YW, United Kingdom
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>
>>
>>
>> --
>> Adam Phillips
>> Associate Scientist, Climate and Global Dynamics Laboratory, NCAR
>> www.cgd.ucar.edu/staff/asphilli/ 303-497-1726
>>
>> <http://www.cgd.ucar.edu/staff/asphilli>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20190426/8e788568/attachment.html>
More information about the ncl-talk
mailing list