[ncl-talk] Can i set the opacity of each color ??

Mary Haley haley at ucar.edu
Fri Aug 29 15:22:21 MDT 2014


Hi Kyle and Rabah,

Sorry about the confusion on gsn_define_colormap.  It doesn't seem to
handle RGBA type color maps, although you can certainly set a colormap
using gsn_define_colormap, and then apply opacity to it later via opacity
resources like cnFillOpacityF

We recommend using "cnFillPalette" if you want to use a color map that has
various opacity values set.

See the attached example, which you should be able to run as-is.  It shows
two ways to set opacities.

I'm not sure what's going on with the labelbar, and whether this is
correct. Rick will need to weigh in here.

--Mary



On Thu, Aug 28, 2014 at 9:32 PM, Kyle Griffin <ksgriffin2 at wisc.edu> wrote:

> Hi Rabah,
>
> As far as I know, gsn_define_colormap does not support RGBA colors, but I
> can't immediately find that in the documentation. If you want to use all of
> the colors in your color array, directly assign res at cnFillColors = colors
> (or colors(:,0:2) if you only want the first three colors) and this will
> set all of the colors in that array to be used in the FillColors. However,
> I believe the "more proper" way is to use cnFillPalette, as specified in
> the link I sent you in the last email.
>
>
> Kyle
>
> ----------------------------------------
> Kyle S. Griffin
> Department of Atmospheric and Oceanic Sciences
> University of Wisconsin - Madison
> Room 1421
> 1225 W Dayton St, Madison, WI 53706
> Email: ksgriffin2 at wisc.edu
>
>
> On Thu, Aug 28, 2014 at 10:17 PM, Rabah Hachelaf <hachelaf at sca.uqam.ca>
> wrote:
>
>> Hi Kyle,
>>
>> I think your suggestion doesn't work because when i add the 4th values
>> for opacity i get this message ;
>> (0)     Warning: gsn_define_colormap: cmap must either be an n x 3 float
>> array,
>> (0)     a single pre-defined colormap name, or a 1-dimensional string
>> array of named colors.
>>
>> i simplified my script like this :
>>
>> colors = (/ (/255,255,255,1/), (/163,255,163,125/), (/255,178,102,200/)
>> /) * 1.0
>> colors= colors/255.
>> print(colors)
>>
>> gsn_define_colormap(wks,colors)
>> ......
>> ......
>> .........
>> res at cnLevelSelectionMode = "ExplicitLevels"     ; set explicit contour
>> levels
>> res at cnLevels    = (/ 40,70,100/) ; set levels
>> res at cnFillColors = (/ 0,1,2/)
>>
>>
>>
>>
>>
>> 2014-08-28 22:42 GMT-04:00 Kyle Griffin <ksgriffin2 at wisc.edu>:
>>
>> You should be able to just add a fourth value to your RGB triplets to
>>> make them RGBA (A for alpha) quadruplets. Since you already divide the
>>> numbers out of 255, you can simply add the alpha on the same scale, with 0
>>> = transparent and 1=opaque (or 255, in your case).
>>>
>>> More of the problem is that you don't seem to be assigning the color
>>> array you create at the beginning of the script to the cnFillColors
>>> resource you set later on. Look at some of the examples on the NCL website
>>> discussing how to work with the new color capabilities at:
>>> http://www.ncl.ucar.edu/Applications/rgbacolor.shtml
>>>
>>>
>>> Kyle
>>>
>>> ----------------------------------------
>>> Kyle S. Griffin
>>> Department of Atmospheric and Oceanic Sciences
>>> University of Wisconsin - Madison
>>> Room 1421
>>> 1225 W Dayton St, Madison, WI 53706
>>> Email: ksgriffin2 at wisc.edu
>>>
>>>
>>> On Thu, Aug 28, 2014 at 8:44 PM, Rabah Hachelaf <hachelaf at sca.uqam.ca>
>>> wrote:
>>>
>>>>
>>>> Hi all ,
>>>>
>>>> I am using the script below to plot humidity between 40-70%(green) and
>>>> 70-100% (orange).
>>>>
>>>> I want to know if i can set the opacity for each color for example
>>>> opacity 50% for the green color and 100% for the orange.
>>>>
>>>> Thanks for help.
>>>>
>>>> ;************************************************
>>>> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
>>>> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"
>>>> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
>>>> ;************************************************
>>>> begin
>>>>  a = addfile("gfs.t00z.pgrb2f00.grib2","r")
>>>>     lon = a->lon_0
>>>>     lat = a->lat_0
>>>>     icing     = short2flt(a->RH_P0_L100_GLL0({50000},:,:))
>>>>
>>>> print(icing(1:4,1:4))
>>>> ;********************************************************
>>>> ;  Display parameters
>>>> ;***************************************
>>>> zoom="test"
>>>> pixel=2048
>>>> ;***************************************************
>>>>
>>>> wks_type="png"
>>>>
>>>>   wks_type at wkWidth = pixel
>>>>    wks_type at wkHeight = pixel
>>>>   wks_type at wkBackgroundOpacityF = 0.0
>>>> wks = gsn_open_wks(wks_type,"icing_test")
>>>>
>>>> colors = (/ (/255,255,255/),(/0,0,0/),(/255,255,255/), (/244,255,244/),
>>>> \
>>>>               (/217,255,217/), (/163,255,163/), (/106,255,106/), \
>>>>               (/43,255,106/), (/0,224,0/), (/0,134,0/),(/255,145,0/),\
>>>>               (/255,178,102/) /) * 1.0 ; we multiply by 1 to make
>>>> colors float
>>>>
>>>> colors = colors/255.
>>>>
>>>>
>>>> gsn_define_colormap(wks,colors)
>>>>
>>>>
>>>> res                   = True
>>>>   res at mpProjection      = "Mercator"       ; choose projection
>>>>   res at mpGridAndLimbOn   = False             ; turn on lat/lon lines
>>>>   res at mpPerimOn         = False             ; turn off box around plot
>>>>   res at mpFillOn          = False
>>>>   res at mpOutlineOn       = True
>>>>   res at cnFillOn          = True              ; color plot desired
>>>>   res at cnLineLabelsOn    = False             ; turn off contour lines
>>>>    res at mpLimitMode  = "LatLon"
>>>>    res at mpMinLatF            =   -85.0
>>>>     res at mpMaxLatF            =  85.0
>>>>     res at mpMinLonF            = -180
>>>>     res at mpMaxLonF            = 180
>>>>   res at vpXF            = 0                 ; make plot bigger
>>>>   res at vpYF            = 1
>>>>   res at vpWidthF        = 1
>>>>   res at vpHeightF       = 1
>>>>
>>>> res at cnLevelSelectionMode = "ExplicitLevels"    ; set explicit contour
>>>> levels
>>>> res at cnLevels    = (/ 40,70,100/) ; set levels
>>>> res at cnFillColors = (/ -1,5,11/)
>>>>
>>>> ;res at cnFillOpacityF=0.5
>>>>
>>>> contour0 = gsn_csm_contour_map(wks,icing,res)  ; create the plot
>>>> --
>>>> ------------------------------
>>>> Cordialement,
>>>> Best regards,
>>>> Rabah Hachelaf
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> ------------------------------
>>>> Cordialement,
>>>> Best regards,
>>>> Rabah Hachelaf
>>>>
>>>> _______________________________________________
>>>> ncl-talk mailing list
>>>> List instructions, subscriber options, unsubscribe:
>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>
>>>>
>>>
>>
>>
>> --
>> ------------------------------
>> Cordialement,
>> Best regards,
>> Rabah Hachelaf
>>
>
>
> _______________________________________________
> ncl-talk mailing list
> 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/20140829/5a06679d/attachment.html 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ce_opacity_1.ncl
Type: application/octet-stream
Size: 988 bytes
Desc: not available
Url : http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20140829/5a06679d/attachment.obj 


More information about the ncl-talk mailing list