[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