[ncl-talk] color set issue and label issue
Herb, Jason
jherb at albany.edu
Wed May 12 16:31:00 MDT 2021
Hello All,
I am working on a plotting using overlays. I have 10 sets of data Regions#1-9 and an overall state average. I have two issues 1) The first when the labels for the region number are set up 1-9 and then try to set up to input the "State Average" into the labels NCL crashes saying it cannot deal with strings. How can I work around this issue?
2) I have 10 colors listed to set up the colors to be used and get the following errors.
fatal:Subscript out of range, error in subscript #0
fatal:An error occurred reading colors
fatal:["Execute.c":8640]:Execute: Error occurred at or near line 113 in file COMonthlyRegionsingleplot.ncl
res at xyLineColor = colors(10) I cannot understand why it is having this issue as it is the same as the other 9 items.
The script is below
Thank you
Jason
begin
;------- Load the associated file
f0 = "COmonthly-Region.txt"
data0 = asciiread(f0,(/12,11/),"double"); Region#1
;-------- Read the data loactions to the variable
y0 = data0(:,1)
y1 = data0(:,2)
y2 = data0(:,3)
y3 = data0(:,4)
y4 = data0(:,5)
y5 = data0(:,6)
y6 = data0(:,7)
y7 = data0(:,8)
y8 = data0(:,9)
y9 = data0(:,10)
x0 = data0(:,0)
y0 at _FillValue=integertoshort(-999)
y1 at _FillValue=integertoshort(-999)
y2 at _FillValue=integertoshort(-999)
y3 at _FillValue=integertoshort(-999)
y4 at _FillValue=integertoshort(-999)
y5 at _FillValue=integertoshort(-999)
y6 at _FillValue=integertoshort(-999)
y7 at _FillValue=integertoshort(-999)
y8 at _FillValue=integertoshort(-999)
y9 at _FillValue=integertoshort(-999)
colors = (/"red","green","blue","brown","orange","purple","gray","yellow","pink","black"/)
REG = (/1., 2., 3., 4., 5., 6., .7, 8., 9., 10./)
;************************************************
; create plots
;************************************************
plot = new(1,graphic)
;---Start the graphics
wks = gsn_open_wks("png","COmonthly-Region2013-2018single.png") ; send graphics to PNG file
; resources for "left" variable
res = True
res at gsnMaximize = True
res at gsnPaperOrientation = "portrait"
res at gsnDraw = False
res at gsnFrame = False
res at trYMinF = 0 ; You could also just use
res at trYMaxF = 1 ; min/max of u0,u1,u2.
res at xyLineThicknessF = 2.0
res at xyLineColor = colors(0)
plot0 = gsn_csm_xy(wks,x0,y0,res)
res at xyLineColor = colors(1)
plot1 = gsn_csm_xy(wks,x0,y1,res)
res at xyLineColor = colors(2)
plot2 = gsn_csm_xy(wks,x0,y2,res)
res at xyLineColor = colors(3)
plot3 = gsn_csm_xy(wks,x0,y3,res)
res at xyLineColor = colors(4)
plot4 = gsn_csm_xy(wks,x0,y4,res)
res at xyLineColor = colors(5)
plot5 = gsn_csm_xy(wks,x0,y5,res)
res at xyLineColor = colors(6)
plot6 = gsn_csm_xy(wks,x0,y6,res)
res at xyLineColor = colors(7)
plot7 = gsn_csm_xy(wks,x0,y7,res)
res at xyLineColor = colors(8)
plot8 = gsn_csm_xy(wks,x0,y8,res)
res at xyLineColor = colors(9)
plot9 = gsn_csm_xy(wks,x0,y9,res)
res at xyLineColor = colors(10)
overlay(plot0,plot1)
overlay(plot0,plot2)
overlay(plot0,plot3)
overlay(plot0,plot4)
overlay(plot0,plot5)
overlay(plot0,plot6)
overlay(plot0,plot7)
overlay(plot0,plot8)
overlay(plot0,plot9)
;
; Attach a legend
lgres = True
lgres at lgLineColors = colors
lgres at lgItemType = "Lines" ; show lines only (default)
lgres at lgLabelFontHeightF = .08 ; legend label font thickness
lgres at vpWidthF = 0.13 ; width of legend (NDC)
lgres at vpHeightF = 0.10 ; height of legend (NDC)
lgres at lgPerimThicknessF = 2.0 ; thicken the box perimeter
lgres at lgMonoDashIndex = True
lgres at lgDashIndex = 0
labels = "Region"+REG
legend = gsn_create_legend (wks, 10, labels,lgres)
;
; Use gsn_add_annotation to attach this legend to our existing plot.
; This way, if we resize the plot, the legend will stay with the
; plot and be resized automatically.
;
; Point (0,0) is the dead center of the plot. Point (0,.5) is center,
; flush bottom. Point (0.5,0.5) is flush bottom, flush right.
;
amres = True
amres at amJust = "BottomRight" ; Use bottom right corner of box
; for determining its location.
amres at amParallelPosF = 0.5 ; Move legend to right
amres at amOrthogonalPosF = 0.5 ; Move legend down.
annoid = gsn_add_annotation(plot0,legend,amres) ; add legend to plot
draw(plot0)
frame(wks)
end
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.ucar.edu/pipermail/ncl-talk/attachments/20210512/f2ea5cf8/attachment.html>
More information about the ncl-talk
mailing list