Re: position of the value 0 in cnLevels to be represented by white colour.

From: gibies george <gibies_at_nyahnyahspammersnyahnyah>
Date: Sun Mar 13 2011 - 04:28:54 MDT

On 13 March 2011 13:12, gibies george <gibies@tropmet.res.in> wrote:

> Thank you Mary,
>
> It is helpful.
>
> But I could not get the reason for the following error:
>
> *Here is the part of my script:*
> _________________________________________________________________________
> print(data_min)
> print(data_max)
> if (data_min .gt. 0)
> resc@gsnSpreadColorStart = white
> resc@cnLevelSelectionMode = "ManualLevels"
> resc@cnMinLevelValF = 0
> end if
> if (data_max .lt. 0)
> resc@gsnSpreadColorEnd = white
> resc@cnLevelSelectionMode = "ManualLevels"
> resc@cnMaxLevelValF = 0
> end if
> if ((data_min .lt. 0) .and. (data_max .gt. 0))
> plot(ptn) = gsn_csm_contour_map(wkspnl,\
> data({region@latsouth:region@latnorth},{region@lonwest:region@loneast
> },j,pos),resc)
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> ;;;; Retrieve contour levels
> getvalues plot@contour(ptn)
> "cnLevels" : levels
> end getvalues
> nlevels = dimsizes(levels)
> print(levels)
> print(" The data unit is " + unit + " : Do you need a change in unit ? ")
> ans = systemfunc("read var; echo $var")
> if (ans .eq. "yes") then
> print ("Enter the factor to be multiplied : ")
> factor = stringtofloat(systemfunc("read var; echo $var"))
> print ("Enter the new unit : ")
> data@unit = systemfunc("read var; echo $var")
> data = data*factor
> levels = levels/factor
> print(levels)
> end if
> ;;;; Create array containing fill indexes.
> colors = new(nlevels+1,integer)
> ii = ind(levels.ge.0)
> num_neg = ii(0)
> num_pos = nlevels-num_neg+1
> print(num_neg)
> print(num_pos)
> print(colors)
> if (num_neg .gt. 0)
> colors(0:num_neg-1) = ispan(2,51,tointeger(51/(num_neg-1)))
> end if
> print(colors)
> colors(num_neg) = 52
> print(colors)
> if (num_pos .gt. 0)
> colors(num_neg+1:) = ispan(53,103,tointeger(51/(num_pos-1)))
> end if
> print(colors)
> resc@cnFillColors= colors
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> end if
> _________________________________________________________________________
>
> *Here is the output : *
> _________________________________________________________________________
>
>
> Variable: data_min
> Type: float
> Total Size: 4 bytes
> 1 values
> Number of Dimensions: 1
> Dimensions and sizes: [1]
> Coordinates:
> (0) -9.96921e+36
>
> This is Noting but the fill value
But when I print the Variable Summary of Data, it gives another value ( 1e+20 )
as fill value.

When I tried to correct the fill value it gives the following output.

(0) The data FillValue is 1e+20 : Do you need a change in FillValue ?
yes
(0) Enter the new FillValue :
-9.96921e+36
fatal:Argument type mismatch on argument (0) of (tofloat) can not coerce
fatal:Execute: Error occurred at or near line 1705 in file script1.ncl

Here is My script :
_______________________________________________________

print(" The data FillValue is " + data@_FillValue + " : Do you need a change
in FillValue ? ")
ans = systemfunc("read var; echo $var")
if (ans .eq. "yes") then
print ("Enter the new FillValue : ")
data@_FillValue_str = systemfunc("read var; echo $var")

                          if (typeof(data).eq."float") then
                              data@_FillValue = tofloat(data@_FillValue_str)
                          end if
                          if (typeof(data).eq."integer") then
                              data@_FillValue = toint(data@_FillValue_str)
                          end if
                          if (typeof(data).eq."short") then
                              data@_FillValue = toshort(data@_FillValue_str)
                          end if
                          if (typeof(data).eq."byte") then
                              data@_FillValue = tobyte(data@_FillValue_str)
                          end if
                          if (typeof(data).eq."logical") then
                              logical_FillValue = new(1,"logical")
                              data@_FillValue = logical_FillValue
                          end if
                          if (typeof(data).eq."ubyte") then
                              data@_FillValue = toubyte(data@_FillValue_str)
                          end if
                          if (typeof(data).eq."uint") then
                              data@_FillValue = touint(data@_FillValue_str)
                          end if
                          if (typeof(data).eq."int64") then
                              data@_FillValue = toint64(data@_FillValue_str)
                          end if
                          if (typeof(data).eq."uint64") then
                              data@_FillValue = touint64(data@
_FillValue_str)
                          end if
                          if (typeof(data).eq."ulong") then
                              data@_FillValue = toulong(data@_FillValue_str)
                          end if
                          if (typeof(data).eq."ushort") then
                              data@_FillValue = toushort(data@
_FillValue_str)
                          end if
end if
_______________________________________________________

How can I correct it.

>
> Variable: data_max
> Type: float
> Total Size: 4 bytes
> 1 values
> Number of Dimensions: 1
> Dimensions and sizes: [1]
> Coordinates:
> (0) 44.79309
> warning:gsnScalarContour is not a valid resource in
> rain_tropics_dem_ecmwf_MeanError_contour at this time
>
>
> Variable: levels
> Type: float
> Total Size: 36 bytes
> 9 values
> Number of Dimensions: 1
> Dimensions and sizes: [9]
> Coordinates:
> (0) -9e+36
> (1) -8e+36
> (2) -7e+36
> (3) -6e+36
> (4) -5e+36
> (5) -4e+36
> (6) -3e+36
> (7) -2e+36
> (8) -1e+36
> (0) The data unit is mm/day : Do you need a change in unit ?
> yes
> (0) Enter the factor to be multiplied :
> 1e+36
> (0) Enter the new unit :
> 1e+36mm/day
>
>
> Variable: levels
> Type: float
> Total Size: 36 bytes
> 9 values
> Number of Dimensions: 1
> Dimensions and sizes: [9]
> Coordinates:
> (0) -9
> (1) -8
> (2) -7
> (3) -6
> (4) -5
> (5) -4
> (6) -3
> (7) -2
> (8) -1
>
>
> Variable: num_neg
> Type: integer
> Total Size: 4 bytes
> 1 values
> Number of Dimensions: 1
> Dimensions and sizes: [1]
> Coordinates:
> Number Of Attributes: 1
> _FillValue : -999
> (0) *-999*
>
>
> Variable: num_pos
> Type: integer
> Total Size: 4 bytes
> 1 values
> Number of Dimensions: 1
> Dimensions and sizes: [1]
> Coordinates:
> Number Of Attributes: 1
> _FillValue : -999
> (0) *-999*
>
>
> Variable: colors
> Type: integer
> Total Size: 40 bytes
> 10 values
> Number of Dimensions: 1
> Dimensions and sizes: [10]
> Coordinates:
> Number Of Attributes: 1
> _FillValue : -999
> (0) -999
> (1) -999
> (2) -999
> (3) -999
> (4) -999
> (5) -999
> (6) -999
> (7) -999
> (8) -999
> (9) -999
> fatal:*The result of the conditional expression yields a missing value*.
> NCL can not determine branch, see ismissing function
> fatal:Execute: Error occurred at or near line 1993 in file script1.ncl
>
> fatal:Execute: Error occurred at or near line 2108 in file script1.ncl
>
> fatal:Execute: Error occurred at or near line 2589 in file script1.ncl
>
> fatal:Execute: Error occurred at or near line 2625 in file script1.ncl
>
>
> ________________________________________________________________________________________________
>
>
> On 10 March 2011 20:44, Mary Haley <haley@ucar.edu> wrote:
>
>> Instead of
>>
>> getvalues plot(ptn)
>>
>> try
>>
>> getvalues plot@contour
>>
>> In the example I gave you, "plot" was a contour plot. In your case, it's a
>> map. The contour plot is "attached" to the "plot" variable via the "contour"
>> attribute.
>>
>> --Mary
>>
>> On Mar 10, 2011, at 6:23 AM, gibies george wrote:
>>
>>
>>
>> On 10 March 2011 10:09, gibies george <gibies@tropmet.res.in> wrote:
>>
>>> Thank you Mary,
>>>
>>> This is exactly what I was looking for.
>>>
>>>
>> But the script
>>
>> plot(ptn) = gsn_csm_contour_map(wkspnl,\
>> data({region@latsouth:region@latnorth},{region@lonwest:region@loneast
>> },j,pos),resc)
>> ;---Retrieve contour levels
>> getvalues plot(ptn)
>> "cnLevels" : levels ;;;; Here is line 1968 in file script1.ncl
>> end getvalues
>>
>> nlevels = dimsizes(levels)
>>
>> shows an error :
>>
>> *warning:gsnScalarContour is not a valid resource in
>> rain_tropics_dem_ecmwf_Climatology_contour at this time*
>> *warning:cnLevels is not a valid resource in map at this time*
>> *warning:NhlGetValues:Error retrieving cnLevels*
>> *fatal:Execute: Error occurred at or near line 1968 in file script1.ncl*
>>
>>
>>> On 10 March 2011 01:28, Mary Haley <haley@ucar.edu> wrote:
>>>
>>>> Gibies,
>>>>
>>>> Instead of using gsnSpreadXXXX, you will probably need to set the
>>>> cnFillColors resource to an array of color indexes, so you can control which
>>>> contour level gets which color index.
>>>>
>>>> If you are setting the contour levels yourself, then you should be able
>>>> to determine what to set cnFillColors to.
>>>>
>>>> If you are letting NCL select the contour levels, then you will need to
>>>> let NCL create the plot, and thn afterwards use "getvalues" to retrieve the
>>>> "cnLevels" resource and construct cnFillColors based on those values.
>>>>
>>>> Something like this:
>>>>
>>>> . . .
>>>> plot = gsn_csm_contour_map(wks,data,res)
>>>>
>>>> ;---Retrieve contour levels
>>>> getvalues plot
>>>> "cnLevels" : levels
>>>> end getvalues
>>>>
>>>> nlevels = dimsizes(levels)
>>>>
>>>> ;---Create array containing fill indexes.
>>>> colors = new(nlevels+1,integer)
>>>> ii = ind(levels.ge.0)
>>>> num_neg = ii(0)
>>>> num_pos = nlevels-num_neg+1
>>>>
>>>> colors(0:num_neg-1) = ispan(2,51,toint(51/(num_neg-1)))
>>>> colors(num_neg:) = ispan(53,103,toint(51/(num_pos-1)))
>>>>
>>>> res@cnFillColors= colors
>>>> plot = gsn_csm_contour_map(wks,data,res)
>>>>
>>>>
>>>>
>>>> You will need to modify this based on whether you have a contour level
>>>> exactly equal to 0 or not.
>>>>
>>>> --Mary
>>>>
>>>>
>>>> On Mar 9, 2011, at 3:51 AM, gibies george wrote:
>>>>
>>>> Thank you Mary for the response.
>>>>
>>>> I am using *gsn_csm_contour_map* with "*ViBlGrWhYeOrRe*" colour-map
>>>>
>>>> I wish to have :
>>>>
>>>> the colours from 1 to 51 ie "*ViBlGr" to be used for negative values.*
>>>> *the colour 52 ie "White" to be used for zero.*
>>>> *the colours from 53 to 103 ie "YeOrRe" to be used for positive values.
>>>> *
>>>> *
>>>> *
>>>> I tried to manage it using *gsnSpreadColorStart *and *gsnSpreadColorEnd
>>>> * in the cases when (data_min .gt. 0) or (data_max .lt. 0) but I don't
>>>> know how to handle the case when *(**data_min .lt. 0**) .and. (data_max
>>>> .gt. 0) which i really want. *
>>>>
>>>> I am afraid that I may not get full range of color map while
>>>> using "gsn_contour_shade"
>>>>
>>>>
>>>> On 9 March 2011 03:57, Mary Haley <haley@ucar.edu> wrote:
>>>>
>>>>> Maybe "gsn_contour_shade" is what you're looking for:
>>>>>
>>>>>
>>>>> http://www.ncl.ucar.edu/Document/Graphics/Interfaces/gsn_contour_shade.shtml
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>>> --Mary
>>>>>
>>>>> On Mar 8, 2011, at 5:47 AM, gibies george wrote:
>>>>>
>>>>> How can I get the position of the value 0 in cnLevels while setting the
>>>>> resources for contour plot ?
>>>>>
>>>>> My requirement is as follows.
>>>>>
>>>>> I would like to get *white to represent the value near to zero* in
>>>>> contour interval irrespective of the data range.
>>>>> ---------
>>>>> ----------
>>>>> -----------
>>>>>
>>>>> gsn_define_colormap(wkspnl,"ViBlGrWhYeOrRe")
>>>>> white = 52
>>>>> data_min = min(data)
>>>>> data_max = max(data)
>>>>>
>>>>> if (data_min .gt. 0) resc@gsnSpreadColorStart = white
>>>>> resc@cnLevelSelectionMode = "ManualLevels" resc@cnMinLevelValF = 0 end
>>>>> if if (data_max .lt. 0) resc@gsnSpreadColorEnd = white
>>>>> resc@cnLevelSelectionMode = "ManualLevels" resc@cnMaxLevelValF = 0 end
>>>>> if
>>>>>
>>>>> if ((data_min .lt. 0) .and. (data_max .gt. 0))
>>>>> *----------*
>>>>> *???????*
>>>>> *----------* end if
>>>>> ----------------------
>>>>> -----------------------
>>>>> ----------------------
>>>>>
>>>>> How can I implement this?
>>>>>
>>>>>
>>>>> --
>>>>> *Gibies George, CSIR-RF,*
>>>>> *Seasonal Scale Prediction Group,
>>>>> Climate and Global Modelling Division,
>>>>> Indian Institute of Tropical Meteorology,
>>>>> Dr. Homi Bhabha Road,
>>>>> NCL (P. O.), Pashan,
>>>>> Pune 411008, India.*
>>>>>
>>>>> *http://sites.google.com/site/gibiesge/*
>>>>>
>>>>> Please Think about the environment. Save paper; Save Trees; and don't
>>>>> print this e-mail unless it is necessary.
>>>>> _______________________________________________
>>>>> ncl-talk mailing list
>>>>> List instructions, subscriber options, unsubscribe:
>>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> *Gibies George, CSIR-RF,*
>>>> *Seasonal Scale Prediction Group,
>>>> Climate and Global Modelling Division,
>>>> Indian Institute of Tropical Meteorology,
>>>> Dr. Homi Bhabha Road,
>>>> NCL (P. O.), Pashan,
>>>> Pune 411008, India.*
>>>>
>>>> *http://sites.google.com/site/gibiesge/*
>>>>
>>>> Please Think about the environment. Save paper; Save Trees; and don't
>>>> print this e-mail unless it is necessary.
>>>> _______________________________________________
>>>> ncl-talk mailing list
>>>> List instructions, subscriber options, unsubscribe:
>>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> *Gibies George, CSIR-RF,*
>>> *Seasonal Scale Prediction Group,
>>> Climate and Global Modelling Division,
>>> Indian Institute of Tropical Meteorology,
>>> Dr. Homi Bhabha Road,
>>> NCL (P. O.), Pashan,
>>> Pune 411008, India.*
>>>
>>> *http://sites.google.com/site/gibiesge/*
>>>
>>> Please Think about the environment. Save paper; Save Trees; and don't
>>> print this e-mail unless it is necessary.
>>>
>>
>>
>>
>> --
>> *Gibies George, CSIR-RF,*
>> *Seasonal Scale Prediction Group,
>> Climate and Global Modelling Division,
>> Indian Institute of Tropical Meteorology,
>> Dr. Homi Bhabha Road,
>> NCL (P. O.), Pashan,
>> Pune 411008, India.*
>>
>> *http://sites.google.com/site/gibiesge/*
>>
>> Please Think about the environment. Save paper; Save Trees; and don't
>> print this e-mail unless it is necessary.
>>
>>
>>
>
>
> --
> *Gibies George, CSIR-RF,*
> *Seasonal Scale Prediction Group,
> Climate and Global Modelling Division,
> Indian Institute of Tropical Meteorology,
> Dr. Homi Bhabha Road,
> NCL (P. O.), Pashan,
> Pune 411008, India.*
>
> *http://sites.google.com/site/gibiesge/*
>
> Please Think about the environment. Save paper; Save Trees; and don't print
> this e-mail unless it is necessary.
>

-- 
*Gibies George,   CSIR-RF,*
*Seasonal Scale Prediction Group,
Climate and Global Modelling Division,
Indian Institute of Tropical Meteorology,
Dr. Homi Bhabha Road,
NCL (P. O.), Pashan,
Pune 411008, India.*
*http://sites.google.com/site/gibiesge/*
Please Think about the environment. Save paper; Save Trees; and don't print
this e-mail unless it is necessary.
Received on Sun Mar 13 04:28:59 2011

This archive was generated by hypermail 2.1.8 : Wed Mar 16 2011 - 09:22:37 MDT