# [ncl-talk] Bug in gsn_histogram

Carl Schreck cjschrec at ncsu.edu
Tue Mar 3 07:00:18 MST 2015

```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
> 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