[ncl-talk] Attaching a map outside (or inside) of a plot
Alan Brammer
abrammer at albany.edu
Fri Jul 10 11:55:07 MDT 2015
The problem here is that you're plotting all 4 locations on each
iteration. Therefore you're only seeing the last iteration.
edited your code to make it executable, with the solution here:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
wks = gsn_open_wks("x11","sample_plot")
lat2=(/23,35,19,25/)
lon2=(/-15,-25,-30,-35/)
colors2 = (/"yellow","blue","forestgreen","purple"/) ;; the indices were
similar in colour so used Mary's colours.
index2 = (/17,17,17,17/)
size2 = (/0.015,0.015,0.015,0.015/)*3
mpres = True
mpres at mpMinLatF = 10
mpres at mpMaxLatF = 40
mpres at mpMinLonF = -40
mpres at mpMaxLonF = -10
mpres at gsnDraw = False
mpres at gsnFrame = False
mkres = True
;;; draw and frame on each loop to see all 4 are being plotted each time.
map = gsn_csm_map(wks,mpres)
idd2 = new(4,graphic)
do i=0,3
mkres at gsMarkerIndex = index2(i) ; Filled circle
mkres at gsMarkerSizeF = size2(i)
mkres at gsMarkerColor := colors2(i)
idd2(i) = gsn_add_polymarker(wks,map,lon2,lat2,mkres)
draw(map)
frame(wks)
end do
;;; This time only add one marker at a time.
map = gsn_csm_map(wks,mpres)
idd2 = new(4,graphic)
do i=0,3
mkres at gsMarkerIndex = index2(i) ; Filled circle
mkres at gsMarkerSizeF = size2(i)
mkres at gsMarkerColor := colors2(i)
idd2(i) = gsn_add_polymarker(wks,map,lon2(i),lat2(i),mkres)
end do
draw(map)
frame(wks)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Alan.
On Fri, 10 Jul 2015 at 11:14 Mary Haley <haley at ucar.edu> wrote:
> It looks like you are doing everything correctly, because you have a
> unique id for every marker you add, and you are setting a different color
> every time.
>
> However, it's possible that the color indexes you've chosen all map to
> different variations of yellow in your current colormap. I would recommend,
> as a test, and also for "cleaner" code, to use named colors, rather than
> color indexes.
>
> For example, instead of:
>
> colors2 = (/2,20,10,14/)
>
> try:
>
> colors2 = (/"yellow","blue","forestgreen","purple"/)
>
> and let me know if you are still getting all yellow points. If you do, it
> would help if we could see the full code, and a sample plot.
>
> Thanks,
>
> --Mary
>
>
>
> On Fri, Jul 10, 2015 at 8:52 AM, Michele Petrini <mpetrini139 at yahoo.it>
> wrote:
>
>> Dear helpdesk,
>> I apologize for replying to Mary only, my mistake.
>> I have another question, still related to add polymarkers to my map to
>> attach, in turn, outside of a plot. I am trying to add full circle to the
>> map, each one with a different color. This is the code I used;
>>
>> plotxy1 =
>> gsn_csm_xy(wks,time,uplot1(:,:),res) ;
>> Draw an XY plot.
>>
>> mapannotation2 =
>> gsn_csm_contour_map(wks,Hicetfmask(24:125,120:220),res1)
>>
>> lat2=(/lat(82,152),lat(99,144),lat(83,154),lat(97,147)/)
>> lon2=(/lon(82,152),lon(99,144),lon(83,154),lon(97,147)/)
>> colors2 = (/2,20,10,14/)
>> index2 = (/17,17,17,17/)
>> size2 = (/0.015,0.015,0.015,0.015/)
>>
>> idd2 = new(4,graphic)
>>
>> mkres = True
>>
>> do i=0,3
>>
>> mkres at gsMarkerIndex = index2(i) ; Filled circle
>> mkres at gsMarkerSizeF = size2(i)
>> mkres at gsMarkerColor = colors2(i)
>>
>> idd2(i) = gsn_add_polymarker(wks,mapannotation2,lon2,lat2,mkres)
>>
>> end do
>>
>> amres = True
>> amres at amParallelPosF = -0.55
>> amres at amOrthogonalPosF = 0.97
>> amres at amJust = "BottomLeft"
>>
>> map_final = gsn_add_annotation(plotxy1,mapannotation2,amres)
>>
>> gsn_panel(wks,plotxy1,(/1,1/),False)
>>
>> What I get is four points in the correct positions and sizes, but all
>> equally colored (yellow). Again, I can't understand where my code is wrong.
>> Thank you.
>>
>> Michele
>>
>>
>> On 09/07/2015 20:10, Mary Haley wrote:
>>
>> Hi Michele,
>>
>> I'm CC-ing ncl-talk, as we prefer for people to post back to the list
>> rather than emailing developers individually.
>>
>> Use gsn_add_text instead of gsn_text, in the same way you are using
>> gsn_add_polyline. Make sure you use a different id:
>>
>> txid1 = gsn_add_text(wks,mapannotation,"A",lon(145,23),lat(145,23),tres)
>>
>> txid2 = gsn_add_text(wks,mapannotation,"B",lon(145,79),lat(145,79),tres)
>>
>> --Mary
>>
>>
>> On Thu, Jul 9, 2015 at 5:54 AM, Michele Petrini <mpetrini139 at yahoo.it>
>> wrote:
>>
>>> Dear Mary,
>>> it works fine. Now I'm trying to add also two letters inside the legend
>>> plot (in order to label the polyline I drew), using the red code below;
>>>
>>> isoplot =
>>> gsn_csm_xy2(wks,xiso,brockplot1(25:77),icetplot1(25:77),resL,resR)
>>>
>>> mapannotation = gsn_csm_contour_map(wks,Hicetfmask(45:226,1:140),res1)
>>>
>>> tres = True
>>> tres at txFontHeightF = 0.01
>>> tres at txFontColor = "red"
>>>
>>> gsn_text(wks,mapannotation,"A",lon(145,23),lat(145,23),tres)
>>>
>>> gsn_text(wks,mapannotation,"B",lon(145,79),lat(145,79),tres)
>>>
>>> ypts = (/lat(145,25),lat(145,77)/)
>>> xpts = (/lon(145,25),lon(145,77)/)
>>>
>>> res2 = True
>>> res2 at gsLineColor = "red"
>>> res2 at gsLineThicknessF = 3.0
>>>
>>> dum = new(1,graphic)
>>> dum = gsn_add_polyline(wks,mapannotation,xpts(0:1),ypts(0:1),res2)
>>>
>>> amres = True
>>> amres at amParallelPosF = -0.55
>>> amres at amOrthogonalPosF = 0.97
>>> amres at amJust = "BottomLeft"
>>>
>>> map_final = gsn_add_annotation(isoplot,mapannotation,amres)
>>>
>>> resF = True
>>> resF at txString = "Isostasy profile over LIS"
>>> resF at txFont = 21
>>> resF at txFontHeightF = 0.03
>>>
>>> gsn_panel(wks,isoplot,(/1,1/),resF)
>>>
>>> What I get is the two letters A, B inside the main XYY plot. I really
>>> can't get why...
>>>
>>> Thank you,
>>> Michele
>>>
>>>
>>>
>>> On 08/07/2015 18:11, Mary Haley wrote:
>>>
>>> Michele,
>>>
>>> I think the error might be coming from trying to panel the "id"
>>> created from calling gsn_add_annotation, rather than the actual plot. Try
>>> this:
>>>
>>> gsn_panel(wks,isoplot,(/1,1/),False)
>>>
>>> You might also look into maximize_output
>>>
>>> --Mary
>>>
>>>
>>> On Wed, Jul 8, 2015 at 5:58 AM, Michele Petrini <mpetrini139 at yahoo.it>
>>> wrote:
>>>
>>>> Dear helpdesk,
>>>> I am trying to attach a small map as a legend of a XY plot (with double
>>>> different Y axes). The map I need to attach must contain also a line, added
>>>> with gsn_add_polyline. The two single plots (the XYY plot and the map with
>>>> the polyline) are correct (I drew them separately first), but as I use
>>>> gsn_add_annotation I get the following error message:
>>>>
>>>>
>>>> fatal:Invalid plot ID=282 passed to NhlGetBB
>>>> warning:pmOverlaySequenceIds isn't a resource in this object
>>>> warning:NhlGetValues:Error retrieving pmOverlaySequenceIds
>>>> fatal:["Execute.c":8578]:Execute: Error occurred at or near line 1927
>>>> in file $NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl
>>>>
>>>> fatal:["Execute.c":8578]:Execute: Error occurred at or near line 6847
>>>> in file $NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl
>>>>
>>>> fatal:["Execute.c":8578]:Execute: Error occurred at or near line 7546
>>>> in file $NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl
>>>>
>>>> fatal:["Execute.c":8578]:Execute: Error occurred at or near line 647 in
>>>> file Exercise1.ncl
>>>>
>>>> Do you have any idea the reason why I get such an error? Here is the
>>>> code.
>>>>
>>>>
>>>> --------------------------------------------------------------------------------------------------------------------------------
>>>> ;***************************************set resources for the isostasy
>>>> plot (Left)
>>>>
>>>> resL = True
>>>>
>>>> resL at tiYAxisString = "Variation in bedrock elevation (30-0
>>>> kyrs BP) (m)"
>>>> resL at tiXAxisFontHeightF = 0.02
>>>> resL at tiYAxisFontHeightF = 0.02
>>>>
>>>> resL at xyLineColors =
>>>> 20 ; Define line colors.
>>>> resL at xyLineThicknessF =
>>>> 3.0 ; Define
>>>> line thickness.
>>>> resL at xyDashPattern =
>>>> 0 ;
>>>> Make curves all solid
>>>>
>>>> resL at trYMaxF = -150.
>>>> resL at trYMinF = -850.
>>>>
>>>> resL at tmXTOn = False
>>>>
>>>> resL at tmYLMinorOn = False
>>>> resL at tmYLLabelFont = 21
>>>> resL at tmYLLabelFontHeightF = 0.02
>>>>
>>>> resL at pmLegendDisplayMode = "Always"
>>>> resL at lgPerimOn = False
>>>> resL at xyExplicitLegendLabels = "Topography variation (m)"
>>>> resL at pmLegendSide = "Bottom"
>>>> resL at pmLegendOrthogonalPosF = 0.01
>>>> resL at pmLegendWidthF = 0.4
>>>> resL at pmLegendHeightF = 0.04
>>>>
>>>> resL at vpHeightF = 0.4
>>>> resL at vpWidthF = 0.4
>>>>
>>>>
>>>> resL at lgAutoManage = False
>>>> resL at tmXBMode =
>>>> "Explicit"
>>>> ; Define your own tick mark labels.
>>>> ;resL at tmXBLabelFont =
>>>> 21
>>>> ; Change font of labels.
>>>> ;resL at tmXBLabelFontHeightF = 0.02
>>>> resL at tmXBMinorOn =
>>>> False
>>>> ; No minor tick marks.
>>>> resL at tmXBValues =
>>>> (/xiso(0),xiso(52)/)
>>>> ; Location to put tick mark labels
>>>> resL at tmXBLabels = (/"A","B"/)
>>>>
>>>> resL at gsnDraw = False ; do not draw
>>>> picture
>>>> resL at gsnFrame = False ; do not
>>>> advance frame
>>>>
>>>>
>>>> ;******************************************set resources for ice
>>>> thickness plot (right)
>>>>
>>>> resR = True
>>>>
>>>> resR at tiYAxisString = "Variation in ice thickness (30-0
>>>> kyrs BP) (m)"
>>>> resR at tiXAxisFontHeightF = 0.02
>>>> resR at tiYAxisFontHeightF = 0.02
>>>>
>>>> resR at xyLineColors =
>>>> 21
>>>> ; Define line colors.
>>>> resR at xyLineThicknessF =
>>>> 3.0
>>>> ; Define line thickness.
>>>> resR at xyDashPattern =
>>>> 1
>>>> ; Make curves all solid
>>>>
>>>> resR at trYMaxF = 3100
>>>> resR at trYMinF = 600
>>>>
>>>> resR at tmXBOn = False
>>>> resR at tmXTOn = False
>>>>
>>>> resR at tmYRMinorOn = False
>>>> resR at tmYRLabelFont = 21
>>>> resR at tmYRLabelFontHeightF = 0.02
>>>>
>>>> resR at vpHeightF = 0.4
>>>> resR at vpWidthF = 0.4
>>>>
>>>>
>>>> resR at pmLegendDisplayMode = "Always"
>>>> resR at lgPerimOn = False
>>>> resR at xyExplicitLegendLabels = "Ice thickness variation (m)"
>>>> resR at pmLegendSide = "Bottom"
>>>> resR at pmLegendOrthogonalPosF = 0.06
>>>> resR at pmLegendWidthF = 0.4
>>>> resR at pmLegendHeightF = 0.04
>>>> resR at lgAutoManage = False
>>>> resR at gsnDraw = False ; do not draw
>>>> picture
>>>> resR at gsnFrame = False ; do not
>>>> advance frame
>>>>
>>>>
>>>> ;******************************************set resources for legend plot
>>>> res1 = True
>>>> res1 at gsnDraw = False
>>>> res1 at gsnFrame = False
>>>>
>>>>
>>>> res1 at mpLimitMode = "Corners" ; choose range of
>>>> map
>>>> res1 at mpLeftCornerLatF = lat(41,1)
>>>> res1 at mpLeftCornerLonF = lon(41,1)
>>>> res1 at mpRightCornerLatF = lat(226,139)
>>>> res1 at mpRightCornerLonF = lon(226,139)
>>>>
>>>> res1 at mpProjection = "LambertEqualArea"
>>>> res1 at mpCenterLatF = 90
>>>> res1 at mpCenterLonF = 0
>>>> res1 at mpOutlineOn = True
>>>> res1 at tfDoNDCOverlay = True
>>>>
>>>> res1 at cnFillOn = True
>>>> res1 at cnLevelSelectionMode = "ManualLevels"
>>>> res1 at cnMinLevelValF = 0
>>>> res1 at cnMaxLevelValF = 5000
>>>> res1 at cnLevelSpacingF = 50
>>>> res1 at gsnDraw = False ; do not draw
>>>> picture
>>>> res1 at gsnFrame = False ; do not
>>>> advance frame
>>>>
>>>> res1 at cnLinesOn = False ; contour lines
>>>> res1 at cnLineLabelsOn = False ; no contour
>>>> labels
>>>> res1 at gsnSpreadColors = True ; use total
>>>> colormap
>>>> res1 at gsnSpreadColorStart = 2
>>>> res1 at gsnSpreadColorEnd = 27
>>>> res1 at cnInfoLabelOn = False ; no contour
>>>> info (right bottom)
>>>> res1 at lbLabelBarOn = False
>>>>
>>>> res1 at vpHeightF = 0.2
>>>> res1 at vpWidthF = 0.2
>>>>
>>>> ;****************************************************end resources
>>>>
>>>> isoplot =
>>>> gsn_csm_xy2(wks,xiso,brockplot1(25:77),icetplot1(25:77),resL,resR)
>>>>
>>>> mapannotation =
>>>> gsn_csm_contour_map(wks,Hicetfmask(45:226,1:140),res1)
>>>>
>>>> ypts = (/lat(145,25),lat(145,77)/)
>>>> xpts = (/lon(145,25),lon(145,77)/)
>>>>
>>>> res2 = True
>>>> res2 at gsLineColor = "black"
>>>> res2 at gsLineThicknessF = 3.0
>>>> res2 at gsLineLabelString = "A B"
>>>>
>>>> dum = new(1,graphic)
>>>> dum = gsn_add_polyline(wks,mapannotation,xpts(0:1),ypts(0:1),res2)
>>>>
>>>> amres = True
>>>> amres at amParallelPosF = -1.15
>>>> amres at amOrthogonalPosF = -0.4
>>>> amres at amJust = "CenterLeft"
>>>>
>>>> map_final = gsn_add_annotation(isoplot,mapannotation,amres)
>>>>
>>>> gsn_panel(wks,map_final,(/1,1/),False)
>>>>
>>>> delete(resL)
>>>> delete(resR)
>>>> delete(res1)
>>>> delete(res2)
>>>> delete(amres)
>>>>
>>>> ----------------------------------------------------------------------------------------------------------------------------------
>>>>
>>>> Thank you for you help,
>>>>
>>>> Michele
>>>>
>>>> --
>>>>
>>>> ***
>>>> Michele Petrini
>>>>
>>>> Ph.D. student in Earth Science and Fluid Mechanics
>>>>
>>>> Università degli studi di Trieste,
>>>> Dipartimento di Matematica e Geoscienze
>>>> Palazzina C - via Weiss 1, 34128 Trieste, Italy
>>>>
>>>> Email: mpetrini139 at yahoo.it
>>>> Skype: michele.petrins
>>>> Mobile: +39 3398367372
>>>>
>>>>
>>>> _______________________________________________
>>>> ncl-talk mailing list
>>>> ncl-talk at ucar.edu
>>>> List instructions, subscriber options, unsubscribe:
>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>
>>>>
>>>
>>> --
>>>
>>> ***
>>> Michele Petrini
>>>
>>> Ph.D. student in Earth Science and Fluid Mechanics
>>>
>>> Università degli studi di Trieste,
>>> Dipartimento di Matematica e Geoscienze
>>> Palazzina C - via Weiss 1, 34128 Trieste, Italy
>>>
>>> Email: mpetrini139 at yahoo.it
>>> Skype: michele.petrins
>>> Mobile: +39 3398367372
>>>
>>>
>>
>> --
>>
>> ***
>> Michele Petrini
>>
>> Ph.D. student in Earth Science and Fluid Mechanics
>>
>> Università degli studi di Trieste,
>> Dipartimento di Matematica e Geoscienze
>> Palazzina C - via Weiss 1, 34128 Trieste, Italy
>>
>> Email: mpetrini139 at yahoo.it
>> Skype: michele.petrins
>> Mobile: +39 3398367372
>>
>>
>> _______________________________________________
>> ncl-talk mailing list
>> ncl-talk at ucar.edu
>> List instructions, subscriber options, unsubscribe:
>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>
>>
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20150710/6ba8c0b8/attachment.html
More information about the ncl-talk
mailing list