# [ncl-talk] using ColorNegDashZeroPosContour

Rick Brownrigg brownrig at ucar.edu
Fri Jan 12 10:53:01 MST 2018

```Hi Cathy,

I spent some time looking around for some other means, but couldn't find
one that was short of programmatically constructing everything oneself.
However, the function ColorNegDashZeroPosContour, contributed by Adam
Phillips, is pretty straightforward and relatively short -- you can easily
modify it.  I've appended it below, and commented out the line that forces
the dash pattern (also colored in red) -- you could "load" this custom

Rick

;************************************************************************
;
; Set neg contour lines to dash and draw with the color cneg,
; draw positive contours with the color cpos, and draw the zero line with
; the color czero.

; Usage:  plot= ColorNegDashZeroPosContour(plot,"blue","black","red")
;
;
undef("ColorNegDashZeroPosContour")
function ColorNegDashZeroPosContour(plot:graphic,cneg:string,czero:string,\
cpos:string)

local cnlvls, cnlinepat, n, N, cncolor
begin

cnlvls = get_cnLevels (plot)

N = dimsizes(cnlvls)
if (ismissing(N) .or. N.le.0) then
print ("NegDashLineContour: dimsizes(cnlvls)="+N+" return (non-fatal)")
return (plot)
else
cnlvls = FixZeroContour (cnlvls, "NegDashLineContour")
end if

if (any(cnlvls.lt.0.)) then
cnlinepat = new (dimsizes(cnlvls), integer) ; create array for line
pats
cnlinepat = 0                               ; default is solid (=0)
cncolor = new (dimsizes(cnlvls), string)    ; create array for line
colors
cncolor = cpos                              ; default is black
do p=0,dimsizes(cnlvls)-1
if (cnlvls(p).lt.-1.e-05) then
; ;         cnlinepat(p) = 1                       ; simple dash line
pattern
cncolor(p)   = cneg
end if
if (cnlvls(p).ge.-1.e-05.and.cnlvls(p).le.1.e-05) then
cncolor(p) = czero
end if
end do

ovrly_plot = GetOverlayPlot (plot, "contourPlotClass", 0)
setvalues ovrly_plot
"cnMonoLineDashPattern"  : False
"cnLineDashPatterns"     : cnlinepat
"cnMonoLineColor"        : False
"cnLineColors"           : cncolor
end setvalues
end if                                ; any
return (plot)
end

On Fri, Jan 12, 2018 at 9:56 AM, Cathy Smith via ncl-talk <ncl-talk at ucar.edu
> wrote:

> Hi all:
>
> I am using ColorNegDashZeroPosContour as in
>
>  plot = ColorNegDashZeroPosContour(plot,"red","magenta","blue")
>
> This works great except I would like the negative lines not dashed. I
> tried setting the resource dashline type to solid and when I checked the
> res, it is set that way e.g.
>
> gsnContourNegLineDashPattern :	0
>
> Is it possible to do what I want with ColorNegDashZeroPosContour? Or is there another routine I should try? Or do I need to hand code this?  I have
>
>    res at gsnContourNegLineDashPattern = 0       ; sets negative contours to dash pattern 1
>    plot = gsn_csm_contour_map_ce (wks, mapx({lat1:lat2},{lon1:lon2}), res)   ; create ;temporary plot
>    plot = ColorNegDashZeroPosContour(plot,"red","magenta","blue")
>    print(res)
>    draw(plot)
>    frame(wks)
>
> Thanks!
> Cathy
>
> --
> ----------------------------------------------
> NOAA/ESRL PSD and CU CIRES303-497-6263 <(303)%20497-6263>http://www.esrl.noaa.gov/psd/people/cathy.smith/
>
> Emails about data/webpages may get quicker responses from emailing esrl.psd.data at noaa.gov
>
>
> _______________________________________________
> 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/20180112/d6894cf6/attachment.html>
```