[ncl-talk] Bug in gsn_histogram

Carl Schreck cjschrec at ncsu.edu
Wed Mar 4 06:49:28 MST 2015


Thanks Mary. I hope it'll stay closer to the current code than to the
current documentation. At least to my mind, it makes more sense group 1.00
- 1.99 together than it does 1.01 - 2.00. But getting everything consistent
is the most important thing!

    Carl

On Tue, Mar 3, 2015 at 4:54 PM, Mary Haley <haley at ucar.edu> wrote:

> Carl,
>
> I'll have to look into this.  Thanks for taking the time to provide a fix.
>
> It's also possible that the documentation was written incorrectly, because
> I know I created several tests for the histogram binning routines, and the
> change you are suggesting will likely change the results of the binning.
>
> It does seem like the routine should be changed to meet the documentation,
> however.
>
> I'll keep you posted. The ticket for this is NCL-2167 for your reference.
>
> --Mary
>
>
> On Tue, Mar 3, 2015 at 7:00 AM, Carl Schreck <cjschrec at ncsu.edu> wrote:
>
>> After some more testing, I figured out that it's a misalignment between
>> the gsn_code and the documentation:
>>
>> http://www.ncl.ucar.edu/Document/Graphics/Resources/gsn.shtml#gsnHistogramBinIntervals
>>
>> It says that gsnHistogramBinIntervals of (/1,2,5,7/) would be binned as:
>>
>>   1 <= bin_1 <= 2
>>   2 <  bin_2 <= 5
>>   5 <  bin_3 <= 7
>>
>> But actually it's binning it as
>>
>>   1 <= bin_1 <  2
>>   2 <= bin_2 <  5
>>   5 <= bin_3 <= 7
>>
>> What I recommend is editing the code in compute_hist_vals in gsn_code.
>> Change:
>> ;
>> ; Special tests for last interval are required.
>> ;
>>           if(i.eq.(nbars-1)) then
>>             if(nbars.gt.1.and.new_binlocs(i).eq.new_binlocs(i-1)) then
>>               num_in_bins(j,i) = num(x(j,:).gt.new_binlocs(i).and. \
>>                                      x(j,:).le.new_binlocs(i+1))
>>             else
>>               num_in_bins(j,i) = num(x(j,:).ge.new_binlocs(i).and. \
>>                                      x(j,:).le.new_binlocs(i+1))
>>             end if
>>           else
>> ;
>> ; If the previous interval was not really an interval, but an exact
>> ; bin value, then be careful not to count those values in the current
>> ; interval.
>> ;
>>             if(i.gt.0.and.new_binlocs(i).eq.new_binlocs(i-1)) then
>>               num_in_bins(j,i) = num(x(j,:).gt.new_binlocs(i).and. \
>>                                      x(j,:).lt.new_binlocs(i+1))
>>             else
>>               num_in_bins(j,i) = num(x(j,:).ge.new_binlocs(i).and. \
>>                                      x(j,:).lt.new_binlocs(i+1))
>>             end if
>>           end if
>>         end if
>> ---------
>> TO:
>> ; If the previous interval was not really an interval, but an exact
>> ; bin value, then be careful not to count those values in the current
>> ; interval.
>> ;
>>           if(i.gt.0.and.new_binlocs(i).eq.new_binlocs(i-1)) then
>>             num_in_bins(j,i) = num(x(j,:).gt.new_binlocs(i).and. \
>>                                    x(j,:).lt.new_binlocs(i+1))
>>           else
>>             num_in_bins(j,i) = num(x(j,:).ge.new_binlocs(i).and. \
>>                                    x(j,:).lt.new_binlocs(i+1))
>>           end if
>>         end if
>> --------
>> Essentially remove the special handling for the last bin. And then change
>> the documentation to:
>>
>>   1 <= bin_1 <  2
>>   2 <= bin_2 <  5
>>   5 <= bin_3 <  7
>>
>> Let me know what you think of if you have further questions.
>>
>>     Carl
>>
>>
>> On Mon, Mar 2, 2015 at 3:40 PM, Carl Schreck <cjschrec at ncsu.edu> wrote:
>>
>>> Sorry to come back with another binning issue, but I've found a similar
>>> problem in gsn_histogram.
>>>
>>> This time, the problem only happens with the right-most bin, and only
>>> when the data can equal the bin boundary, such as with integer data.
>>>
>>> Here's some simple sample code and a plot. Notice how in the first group
>>> of figures, when the data is a float, the bars move seamlessly to the left
>>> as the range increases.
>>>
>>> In the second half of the figures, the data are integer, and sometimes
>>> will equal the top boundary. In this case, the rightmost bar changes before
>>> as a new bar is added to its right.
>>>
>>> Let me know if you have any questions or suggestions. Thanks!
>>>
>>>     Carl
>>>
>>> --
>>>
>>> <http://www.cicsnc.org/>
>>> <http://www.researcherid.com/rid/B-8711-2011>
>>> * Cyclone <http://www.cyclonecenter.org/>*Center.org
>>> <http://www.cyclonecenter.org/>  *Carl J. Schreck III, PhD*
>>> *Research Associate*
>>> Cooperative Institute for Climate and Satellites NC
>>> <http://www.cicsnc.org/>
>>> North Carolina State University <http://ncsu.edu/>
>>> NOAA's National Climatic Data Center <http://ncdc.noaa.gov/>
>>> 151 Patton Ave, Asheville, NC 28801
>>> e: cjschrec at ncsu.edu
>>> o: +1 828 257 3140
>>> Publications
>>> <http://scholar.google.com/citations?hl=en&user=th8ONEcAAAAJ&view_op=list_works&sortby=pubdate>
>>> monitor.cicsnc.org/mjo
>>>
>>
>>
>>
>> --
>>
>> <http://www.cicsnc.org/>
>> <http://www.researcherid.com/rid/B-8711-2011>
>> * Cyclone <http://www.cyclonecenter.org/>*Center.org
>> <http://www.cyclonecenter.org/>  *Carl J. Schreck III, PhD*
>> *Research Associate*
>> Cooperative Institute for Climate and Satellites NC
>> <http://www.cicsnc.org/>
>> North Carolina State University <http://ncsu.edu/>
>> NOAA's National Climatic Data Center <http://ncdc.noaa.gov/>
>> 151 Patton Ave, Asheville, NC 28801
>> e: cjschrec at ncsu.edu
>> o: +1 828 257 3140
>> Publications
>> <http://scholar.google.com/citations?hl=en&user=th8ONEcAAAAJ&view_op=list_works&sortby=pubdate>
>> monitor.cicsnc.org/mjo
>>
>> _______________________________________________
>> ncl-talk mailing list
>> List instructions, subscriber options, unsubscribe:
>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>
>>
>


-- 

<http://www.cicsnc.org/>
<http://www.researcherid.com/rid/B-8711-2011>
* Cyclone <http://www.cyclonecenter.org/>*Center.org
<http://www.cyclonecenter.org/>  *Carl J. Schreck III, PhD*
*Research Associate*
Cooperative Institute for Climate and Satellites NC <http://www.cicsnc.org/>

North Carolina State University <http://ncsu.edu/>
NOAA's National Climatic Data Center <http://ncdc.noaa.gov/>
151 Patton Ave, Asheville, NC 28801
e: cjschrec at ncsu.edu
o: +1 828 257 3140
Publications
<http://scholar.google.com/citations?hl=en&user=th8ONEcAAAAJ&view_op=list_works&sortby=pubdate>
monitor.cicsnc.org/mjo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20150304/8c6c8dba/attachment.html 


More information about the ncl-talk mailing list