[ncl-talk] Make zero white in colour bar

Mary Haley haley at ucar.edu
Fri Aug 4 10:05:46 MDT 2017


Hi Mike (and Barry),

Just an FYI: I don't think you need to use cnFillColors. You can simply
read the colormap you want, set the first color to white, and then load
this new colormap using cnFillPalette:

    cmap = read_colormap_file("BlueYellowRed")
    cmap(0,:) = 1.   ; Make first color white

    res at cnLevelSelectionMode = "ExplicitLevels"    ; set explicit contour
levels
    res at cnLevels        = (/0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1/)  ; 10
levels
    res at cnFillPalette  = cmap

If you want the first color to be transparent rather than white, then use:

    cmap(0,3) = 0,0   ; Make first color transparent

Cheers,

--Mary




On Wed, Aug 2, 2017 at 8:45 AM, Michael Weston <mjweston at masdar.ac.ae>
wrote:

> Hi Barry
>
> Here we go;
>
>     res at cnLevelSelectionMode = "ExplicitLevels"    ; set explicit contour
> levels
>     res at cnLevels        = (/0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1/)  ; 10
> levels
>     cmap = read_colormap_file("BlueYellowRed")
>     mycol = span_color_indexes("BlueYellowRed",11)  ; levels+1
>     myind = reshape(mycol,11)                                    ;
> reshape array so that cnFillColors is happy later
>     myind(0) = 0
> ; set first colour to background colour, which is white in this case. 0 is
> an index number for the palette
>     res at cnFillColors = (/ myind /)
>
> Output is attached.
>
> Thanks for your help on this.
>
> Cheers
>
> Mike
>
> On 02/08/2017 17:32, Barry Lynn wrote:
>
> Hi:
>
> You need to define things, so I guess you're/we're stuck.
>
> I am not sure about the "Span" index line -- someone else will have to
> answer.
>
> Barry
>
> On Wed, Aug 2, 2017 at 4:28 PM, Michael Weston <mjweston at masdar.ac.ae>
> wrote:
>
>> Hi Barry
>>
>> Thanks for this. Yes, while is does achieve white in the first block (see
>> attached), I was actually trying to avoid defining each colour of each
>> block individually.
>>
>> If I adapt this approach, I could use  *get_color_index  *and loop
>> through my levels. Get the named colour of each level. And then recreate
>>
>> icol = get_color_index(cmap,levels,0)
>>
>> res1 at cnFillColors         = (/"White", cmap[icol_1],cmap[icol_2],etc,
>> ...,cmap[icol_10]/)
>>
>> I was hoping to there was a cleaner approach something like:
>>
>> res at cnFillColors = (/"White",*span_color_indexes*("BlueYellowRed
>> ",10)[1:9]/) ; I know syntax is not ncl correct here but hope you get my
>> drift
>>
>> Is this possible?
>>
>> Mike
>>
>>
>>
>> On 02/08/2017 17:03, Barry Lynn wrote:
>>
>> You can remove one interval and one "whilte."
>>
>> On Wed, Aug 2, 2017 at 4:02 PM, Barry Lynn <barry.h.lynn at gmail.com>
>> wrote:
>>
>>> Hi:
>>>
>>> You need to set your classes.
>>>
>>>     res1 at cnLevelSelectionMode = "ExplicitLevels"    ; set explicit
>>> contour levels
>>>
>>>   res1 at cnLevels             = (/ 000, 1,5, 10., 15., \
>>>
>>>                                      20, 30,40,50,75,100/)
>>>
>>>     res1 at cnFillColors         = (/"White","White","AntiqueWhite","AntiqueWhite3",
>>> \
>>>
>>>                                     "chartreuse", \
>>>
>>>                                     "chartreuse3","ForestGreen", \
>>>
>>>                                     "Yellow","Orange","Red","HotPi
>>> nk3","HotPink1","HotPink","Violet"/)
>>>
>>> On Wed, Aug 2, 2017 at 3:59 PM, Michael Weston <mjweston at masdar.ac.ae>
>>> wrote:
>>>
>>>> Hi Barry
>>>>
>>>> So I can define the classes manually as below (although this is a
>>>> tradeoff):
>>>>
>>>>     res at cnLevelSelectionMode = "ManualLevels"
>>>>     res at cnMinLevelValF   =  0.1               ; set min contour level
>>>>     res at cnMaxLevelValF   =  1               ; set max contour level
>>>>     res at cnLevelSpacingF  =  0.1               ; set contour spacing
>>>>
>>>>     res at lbLabelStrings        = (/"0.1","0.2","0.3","0.4","0.5
>>>> ","0.6","0.7","0.8","0.9","1"/)
>>>> But it still creates a purple box in the color bar.
>>>> Is this what you had in mind?
>>>>
>>>> Thanks
>>>> Mike
>>>>
>>>>
>>>> On 02/08/2017 16:41, Barry Lynn wrote:
>>>>
>>>> Hi:
>>>>
>>>> The easiest thing to do is just define your color bar manually, and
>>>> your intervals not to include 0.  You then set the leftward most color to
>>>> white.
>>>>
>>>> I am not sure if there is an easier way.
>>>>
>>>> Do you need help with this?
>>>>
>>>> Barry
>>>>
>>>> On Wed, Aug 2, 2017 at 3:31 PM, Michael Weston <mjweston at masdar.ac.ae>
>>>> wrote:
>>>>
>>>>> Hi
>>>>> No not really. What line in the code is causing it to be included?
>>>>> My understanding from both these lines is that it starts at zero.
>>>>>
>>>>> res at cnLevels             = fspan(0,1,10)
>>>>> ...
>>>>> res at lbLabelStrings        = (/"0","0.1","0.2","0.3","0.4",
>>>>> "0.5","0.6","0.7","0.8","0.9","1"/)
>>>>>
>>>>> Mike
>>>>>
>>>>>
>>>>> On 02/08/2017 16:21, Barry Lynn wrote:
>>>>>
>>>>> Hi:
>>>>>
>>>>> Do you really want to include the < 0 part of your color bar?
>>>>>
>>>>> On Wed, Aug 2, 2017 at 2:51 PM, Michael Weston <mjweston at masdar.ac.ae>
>>>>> wrote:
>>>>>
>>>>>> Dear NCL users,
>>>>>>
>>>>>> This question has been asked many times. However, I wonder if a more
>>>>>> elegant solution has been found in the mean time.
>>>>>> E.g subjects in this group, but these do not answer my question
>>>>>>
>>>>>> Making zero value white in contour plot (Jake Huff)
>>>>>> Re: Making zero value white in contour plot (Mary Haley)
>>>>>> Re: Making zero value white in contour plot (Dennis Shea)
>>>>>>
>>>>>> I have also tried:
>>>>>> Getting the colour index (*get_color_index*), setting the colour
>>>>>> index to another colour using *NhlSetColor*
>>>>>>
>>>>>> I have tried these links
>>>>>> "How to coincide zero with the white color of the colo bar with
>>>>>> uneven numbering"
>>>>>> http://mailman.ucar.edu/pipermail/ncl-talk/2014-November/001361.html
>>>>>> This involves indexing a 256 color palette to the colours you want in
>>>>>> your 16 level map/color bar.
>>>>>>
>>>>>> combined with
>>>>>>
>>>>>> http://www.ncl.ucar.edu/Document/Functions/Built-in/get_colo
>>>>>> r_index.shtml
>>>>>>
>>>>>> However, none have really hit the nail on the head despite my
>>>>>> efforts. And I imagine this must be much simpler than indexing a 256 color
>>>>>> scheme.
>>>>>>
>>>>>> What I want:
>>>>>> 1. I want to make a map using filled contours, but I want zero to be
>>>>>> represented by white.
>>>>>>     I can achieve this by making all zero values missing values.
>>>>>> 2. I want to have a color bar next to my map, with zero represented
>>>>>> by white.
>>>>>>     I can not achieve this.
>>>>>>
>>>>>> My map is attached.
>>>>>> As you can see it is beautiful, except, I would like to get rid of
>>>>>> the delightful purple and dark blue in the color bar. (i.e. first two
>>>>>> classes.)
>>>>>>
>>>>>> Is this possible?
>>>>>>
>>>>>> Thanks and regards
>>>>>> Michael
>>>>>>
>>>>>>
>>>>>> general overview of code below
>>>>>>
>>>>>>     sfile = addfile(srcFileName,"r")
>>>>>>     TMP       = sfile->var_index
>>>>>>     TMP = where(TMP.ne.0,TMP,TMP at _FillValue) ;MAKE ZERO MISSING
>>>>>>
>>>>>>     res at cnFillOn          = True
>>>>>>     res at cnFillMode       = "RasterFill"       ; Raster Mode
>>>>>>     res at cnConstFEnableFill = True
>>>>>>     res at cnLinesOn         = False
>>>>>>     res at cnLineLabelsOn    = False
>>>>>>
>>>>>>     res at cnLevelSelectionMode = "ExplicitLevels"
>>>>>>     res at cnLevels             = fspan(0,1,10)
>>>>>>     cmap = read_colormap_file("BlueYellowRed")
>>>>>>     res at lbLabelBarOn          = True
>>>>>>     res at lbLabelStrings        = (/"0","0.1","0.2","0.3","0.4",
>>>>>> "0.5","0.6","0.7","0.8","0.9","1"/)
>>>>>>     res at lbOrientation         = "Vertical"
>>>>>>     wks = gsn_open_wks("png","ncl_map")
>>>>>>     plot = gsn_csm_contour_map(wks,TMP,res)
>>>>>>     draw(plot)
>>>>>>     frame(wks)
>>>>>>     delete(wks)
>>>>>>
>>>>>> --
>>>>>>
>>>>>> *Michael* *Weston*
>>>>>> Research Engineer
>>>>>>
>>>>>>
>>>>>> *A Part of Khalifa University of Science and Technology*
>>>>>>
>>>>>> PO Box 54224, Abu Dhabi,
>>>>>> United Arab Emirates
>>>>>> Office   +971 2 810 9510 <+971%202%20810%209510>
>>>>>>
>>>>>> Email   mjweston at masdar.ac.ae
>>>>>>  http://www.masdar.ac.ae
>>>>>>
>>>>>>
>>>>>> *Please consider the environment before printing this email*
>>>>>>
>>>>>> This transmission is confidential and intended solely for the person
>>>>>> or organization to whom it is addressed. It may contain privileged and
>>>>>> confidential information. If you are not the intended recipient, you should
>>>>>> not copy, distribute or take any action in reliance on it. If you have
>>>>>> received this transmission in error, please notify us immediately by e-mail
>>>>>> at *info at masdar.ae <info at masdar.ae>**.*
>>>>>>
>>>>>> _______________________________________________
>>>>>> ncl-talk mailing list
>>>>>> ncl-talk at ucar.edu
>>>>>> List instructions, subscriber options, unsubscribe:
>>>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Barry H. Lynn, Ph.D
>>>>> Senior Lecturer,
>>>>> The Institute of the Earth Science,
>>>>> The Hebrew University of Jerusalem,
>>>>> Givat Ram, Jerusalem 91904, Israel
>>>>> Tel: 972 547 231 170
>>>>> Fax: (972)-25662581
>>>>>
>>>>> C.E.O, Weather It Is, LTD
>>>>> Weather and Climate Focus
>>>>> http://weather-it-is.com
>>>>> Jerusalem, Israel
>>>>> Local: 02 930 9525
>>>>> Cell: 054 7 231 170
>>>>> Int-IS: x972 2 930 9525
>>>>> US 914 432 3108 <%28914%29%20432-3108>
>>>>>
>>>>>
>>>>> --
>>>>>
>>>>> *Michael* *Weston*
>>>>> Research Engineer
>>>>>
>>>>>
>>>>> *A Part of Khalifa University of Science and Technology*
>>>>>
>>>>> PO Box 54224, Abu Dhabi,
>>>>> United Arab Emirates
>>>>> Office   +971 2 810 9510 <+971%202%20810%209510>
>>>>>
>>>>> Email   mjweston at masdar.ac.ae
>>>>>  http://www.masdar.ac.ae
>>>>>
>>>>>
>>>>> *Please consider the environment before printing this email*
>>>>>
>>>>> This transmission is confidential and intended solely for the person
>>>>> or organization to whom it is addressed. It may contain privileged and
>>>>> confidential information. If you are not the intended recipient, you should
>>>>> not copy, distribute or take any action in reliance on it. If you have
>>>>> received this transmission in error, please notify us immediately by e-mail
>>>>> at *info at masdar.ae <info at masdar.ae>**.*
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Barry H. Lynn, Ph.D
>>>> Senior Lecturer,
>>>> The Institute of the Earth Science,
>>>> The Hebrew University of Jerusalem,
>>>> Givat Ram, Jerusalem 91904, Israel
>>>> Tel: 972 547 231 170
>>>> Fax: (972)-25662581
>>>>
>>>> C.E.O, Weather It Is, LTD
>>>> Weather and Climate Focus
>>>> http://weather-it-is.com
>>>> Jerusalem, Israel
>>>> Local: 02 930 9525
>>>> Cell: 054 7 231 170
>>>> Int-IS: x972 2 930 9525
>>>> US 914 432 3108 <%28914%29%20432-3108>
>>>>
>>>>
>>>> --
>>>>
>>>> *Michael* *Weston*
>>>> Research Engineer
>>>>
>>>>
>>>> *A Part of Khalifa University of Science and Technology*
>>>>
>>>> PO Box 54224, Abu Dhabi,
>>>> United Arab Emirates
>>>> Office   +971 2 810 9510 <+971%202%20810%209510>
>>>>
>>>> Email   mjweston at masdar.ac.ae
>>>>  http://www.masdar.ac.ae
>>>>
>>>>
>>>> *Please consider the environment before printing this email*
>>>>
>>>> This transmission is confidential and intended solely for the person or
>>>> organization to whom it is addressed. It may contain privileged and
>>>> confidential information. If you are not the intended recipient, you should
>>>> not copy, distribute or take any action in reliance on it. If you have
>>>> received this transmission in error, please notify us immediately by e-mail
>>>> at *info at masdar.ae <info at masdar.ae>**.*
>>>>
>>>
>>>
>>>
>>> --
>>> Barry H. Lynn, Ph.D
>>> Senior Lecturer,
>>> The Institute of the Earth Science,
>>> The Hebrew University of Jerusalem,
>>> Givat Ram, Jerusalem 91904, Israel
>>> Tel: 972 547 231 170
>>> Fax: (972)-25662581
>>>
>>> C.E.O, Weather It Is, LTD
>>> Weather and Climate Focus
>>> http://weather-it-is.com
>>> Jerusalem, Israel
>>> Local: 02 930 9525
>>> Cell: 054 7 231 170
>>> Int-IS: x972 2 930 9525
>>> US 914 432 3108 <%28914%29%20432-3108>
>>>
>>
>>
>>
>> --
>> Barry H. Lynn, Ph.D
>> Senior Lecturer,
>> The Institute of the Earth Science,
>> The Hebrew University of Jerusalem,
>> Givat Ram, Jerusalem 91904, Israel
>> Tel: 972 547 231 170
>> Fax: (972)-25662581
>>
>> C.E.O, Weather It Is, LTD
>> Weather and Climate Focus
>> http://weather-it-is.com
>> Jerusalem, Israel
>> Local: 02 930 9525
>> Cell: 054 7 231 170
>> Int-IS: x972 2 930 9525
>> US 914 432 3108 <%28914%29%20432-3108>
>>
>>
>> --
>>
>> *Michael* *Weston*
>> Research Engineer
>>
>>
>> *A Part of Khalifa University of Science and Technology*
>>
>> PO Box 54224, Abu Dhabi,
>> United Arab Emirates
>> Office   +971 2 810 9510 <+971%202%20810%209510>
>>
>> Email   mjweston at masdar.ac.ae
>>  http://www.masdar.ac.ae
>>
>>
>> *Please consider the environment before printing this email*
>>
>> This transmission is confidential and intended solely for the person or
>> organization to whom it is addressed. It may contain privileged and
>> confidential information. If you are not the intended recipient, you should
>> not copy, distribute or take any action in reliance on it. If you have
>> received this transmission in error, please notify us immediately by e-mail
>> at *info at masdar.ae <info at masdar.ae>**.*
>>
>
>
>
> --
> Barry H. Lynn, Ph.D
> Senior Lecturer,
> The Institute of the Earth Science,
> The Hebrew University of Jerusalem,
> Givat Ram, Jerusalem 91904, Israel
> Tel: 972 547 231 170
> Fax: (972)-25662581
>
> C.E.O, Weather It Is, LTD
> Weather and Climate Focus
> http://weather-it-is.com
> Jerusalem, Israel
> Local: 02 930 9525
> Cell: 054 7 231 170
> Int-IS: x972 2 930 9525
> US 914 432 3108 <(914)%20432-3108>
>
>
> --
>
> *Michael* *Weston*
> Research Engineer
>
>
> *A Part of Khalifa University of Science and Technology*
>
> PO Box 54224, Abu Dhabi,
> United Arab Emirates
> Office   +971 2 810 9510 <+971%202%20810%209510>
>
> Email   mjweston at masdar.ac.ae
>  http://www.masdar.ac.ae
>
>
> *Please consider the environment before printing this email*
>
> This transmission is confidential and intended solely for the person or
> organization to whom it is addressed. It may contain privileged and
> confidential information. If you are not the intended recipient, you should
> not copy, distribute or take any action in reliance on it. If you have
> received this transmission in error, please notify us immediately by e-mail
> at *info at masdar.ae <info at masdar.ae>**.*
>
> _______________________________________________
> 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/20170804/49dee89f/attachment.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: masdarlogo.jpg
Type: image/jpeg
Size: 5411 bytes
Desc: not available
Url : http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170804/49dee89f/attachment.jpg 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 5411 bytes
Desc: not available
Url : http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170804/49dee89f/attachment.jpe 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 5411 bytes
Desc: not available
Url : http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170804/49dee89f/attachment-0001.jpe 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 5411 bytes
Desc: not available
Url : http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170804/49dee89f/attachment-0002.jpe 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/jpeg
Size: 5411 bytes
Desc: not available
Url : http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20170804/49dee89f/attachment-0003.jpe 


More information about the ncl-talk mailing list