[ncl-talk] Fewer questions about a Histogram Plot

Mary Haley haley at ucar.edu
Tue Nov 21 10:14:55 MST 2017


Hi Barry,

I don't understand your question. When you say "I originally tried to just
plot the data in mod_x and obs_x using the standard examples it didn't
work."  In what way did it not work?  Can you provide your data and a
script so I can see what you mean?

You shouldn't need to count the values in each range because gsn_histogram
does that for you.

For example, here's a 5-line script that draws a very basic histogram.

  y = (/3.1,0.5,3.8,3.4,2.1,1.5,2.6,2.3,3.6,1.7/)
  wks = gsn_open_wks("png","hist")
  res = True
  res at gsnHistogramBinIntervals = (/0,1,2,3,4/)
  plot = gsn_histogram(wks,y,res)

Note I used intervals of (0,1,2,3,4)

You should see a histogram with four bars:

  First bar  = 1 b/c we have one value    >=0 and < 1
  Second bar = 2 b/c we have two values   >=1 and < 2
  Third bar  = 3 b/c we have three values >=2 and < 3
  Fourth bar = 4 b/c we have four values  >=3 and <=4

Note the last bar is special, because it contains all values
less-than-or-equal-to the last interval.

We do have a single meteogram example, and several bar chart examples, if
you simply want to draw bars instead of XY plots.

See:

http://www.ncl.ucar.edu/Applications/bar.shtml
http://www.ncl.ucar.edu/Applications/meteo.shtml

--Mary



On Tue, Nov 21, 2017 at 7:08 AM, Barry Lynn <barry.h.lynn at gmail.com> wrote:

> Mary:
>
> Thank you for the suggestions yesterday.  The histogram looks okay now.
>
> I'd like to bring to your attention a couple of things.
>
> 1) I believe that the examples you have on the site do not necessarily (as
> is) plot histograms typically drawn in meteorological papers. For instance,
> when I originally tried to just plot the data in mod_x and obs_x using the
> standard examples it didn't work.  For this reason, I created intervals of
> data whose index is the interval value and the number of times the index
> value appears is equal the value of the data (obs_x or obs_y) within.
>
> For instance, if there is an interval with 10001 grids with dBZ values
> (radar reflectivity) within this interval then that index will have 10001
> values, all equal to the value of the index.
>
> 2) I do this with this loop and am wondering if there is an more concise
> way to write it.
>
>   i_num = 0
>
>   i_end = 0
>
>   i_beg = 0
>
>   do i_int = 0,dims_obs_x-1
>
>   i_end = i_beg + floattointeger(obs_x(i_int))
>
>   do x_int = i_beg,i_end-1
>
>   x_new(i_num) = i_int
>
>   i_num = i_num + 1
>
>   end do
>
>   if (i_beg.eq.i_end)then
>
>    x_new(i_num) = i_int
>
>    i_num = i_num + 1
>
>   end if
>
>   i_beg = i_end
>
>   end do
>
>
> 3) If I take your program and substitute my data (num_x) at the top I get
> the strange figure attached (00002.png).  We're I to put this data into a
> typical graphing program, the data would come out correctly as
> histo_mod.pdf.
>
>
> Perhaps I've overlooked something?
>
>
> Thanks,
>
>
> Barry
>
> On Mon, Nov 20, 2017 at 7:19 PM, Mary Haley <haley at ucar.edu> wrote:
>
>> Barry,
>>
>> You don't want to use discrete bin intervals, unless you are wanting to
>> count the # of values *exactly equal* to a value.
>>
>> For a range of values, use gsnHistogramBinIntervals.
>>
>> Please read over the histogram page carefully, because we have many
>> examples on this page that talk about the different histogram options.
>>
>> As I think I mentioned before, I updated example histo_2.ncl to show how
>> to explicitly request an array of bin intervals.
>>
>> Run the attached script, will hopefully illustrate the difference between
>> gsnHistogramBinIntervals and gsnHistogramDiscreteBinValues.
>>
>> --Mary
>>
>>
>> On Mon, Nov 20, 2017 at 8:54 AM, Barry Lynn <barry.h.lynn at gmail.com>
>> wrote:
>>
>>> Hello:
>>>
>>> I found the coding lines that allows me to map the number of intervals,
>>> explicitly.  I found the coding lines that allow me to specify how many of
>>> the labels I want to map.
>>>
>>> That's here:
>>>
>>> https://www.ncl.ucar.edu/Applications/Scripts/histo_3.ncl
>>>
>>>  res at tmXBLabelStride                = 2     ; every other x-label
>>>   res at gsnHistogramDiscreteBinValues  = ispan(0,25,1)
>>>
>>> However, I don't see how to change the number of labels to be different
>>> from their default number, which equals the number of tmXBValues.
>>>
>>> I need to set the latter so that I can add more than 9 labels.
>>>
>>> Thank you
>>>
>>>
>>> (0) res at tmXBLabels = -9
>>>
>>> (1) res at tmXBLabels = 0
>>>
>>> (2) res at tmXBLabels = 9
>>>
>>> (3) res at tmXBLabels = 18
>>>
>>> (4) res at tmXBLabels = 27
>>>
>>> (5) res at tmXBLabels = 36
>>>
>>> (6) res at tmXBLabels = 45
>>>
>>> (7) res at tmXBLabels = 54
>>>
>>> (8) res at tmXBLabels = 63
>>>
>>> (0) tmXBValues = 0.0555556
>>>
>>> (1) tmXBValues = 0.166667
>>>
>>> (2) tmXBValues = 0.277778
>>>
>>> (3) tmXBValues = 0.388889
>>>
>>> (4) tmXBValues = 0.5
>>>
>>> (5) tmXBValues = 0.611111
>>>
>>> (6) tmXBValues = 0.722222
>>>
>>> (7) tmXBValues = 0.833333
>>>
>>> (8) tmXBValues = 0.944444
>>>
>>> On Mon, Nov 20, 2017 at 3:01 PM, Barry Lynn <barry.h.lynn at gmail.com>
>>> wrote:
>>>
>>>> Hi:
>>>>
>>>> I can get the labels to display correctly if I use:
>>>>
>>>> res at tmXBLabels = int_radar(::3)
>>>>
>>>>
>>>> However, the histogram program is amalgamating the smaller bins into 10
>>>> sized default bins.
>>>>
>>>>
>>>> I would hope that there is a way to explicitly tell the histogram
>>>> program to use all the interval data (23 intervals.
>>>>
>>>>
>>>> I tried setting:
>>>>
>>>>
>>>> res at tmXBMode        = "Manual"
>>>>
>>>> and creating manual tick marks, but then my histogram labels go only
>>>> from 0 to 1.
>>>>
>>>>
>>>> As below.
>>>>
>>>>
>>>>  rad_inc = 3./(int_radar(dimsizes(int_radar)-1)+10)
>>>>
>>>>   print("rad_inc  = " +rad_inc)
>>>>
>>>>   new_ticks = new(dimsizes(int_radar),float)
>>>>
>>>>   new_ticks(0)= 0
>>>>
>>>>   do inc = 1,dimsizes(int_radar)-1,1
>>>>
>>>>    new_ticks(inc) = new_ticks(inc-1)+rad_inc
>>>>
>>>>   end do
>>>>
>>>>   print("new_ticks = " + new_ticks)
>>>>
>>>>   res at tmXBValues := new_ticks
>>>>
>>>>   res at tmXBLabels := int_radar
>>>>
>>>> On Sun, Nov 19, 2017 at 9:21 PM, Barry Lynn <barry.h.lynn at gmail.com>
>>>> wrote:
>>>>
>>>>> Hi:
>>>>>
>>>>> I am having trouble figuring out why my histo.ncl program won't plot
>>>>> data beyond value (x-axis) of 15.  This is really dbz data, so the range is
>>>>> correct: -9 to 60.
>>>>>
>>>>> I also checked that the labels are present in:
>>>>>
>>>>> res at tmXBLabels = int_radar
>>>>>
>>>>>
>>>>> and the data dimensions are correct (23 elements).
>>>>>
>>>>> However, I don't see any data (and any labels 18-60) indicating that
>>>>> the data has all been displayed.
>>>>>
>>>>> Thank you,
>>>>>
>>>>> Barry
>>>>>
>>>>> --
>>>>> Barry H. Lynn, Ph.D
>>>>> Senior Lecturer,
>>>>> The Institute of the Earth Science,
>>>>> The Hebrew University of Jerusalem,
>>>>> Givat Ram, Jerusalem 91904, Israel
>>>>> Tel: 972 547 231 170
>>>>> Fax: (972)-25662581
>>>>>
>>>>> C.E.O, Weather It Is, LTD
>>>>> Weather and Climate Focus
>>>>> http://weather-it-is.com
>>>>> Jerusalem, Israel
>>>>> Local: 02 930 9525
>>>>> Cell: 054 7 231 170
>>>>> Int-IS: x972 2 930 9525
>>>>> US 914 432 3108 <(914)%20432-3108>
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Barry H. Lynn, Ph.D
>>>> Senior Lecturer,
>>>> The Institute of the Earth Science,
>>>> The Hebrew University of Jerusalem,
>>>> Givat Ram, Jerusalem 91904, Israel
>>>> Tel: 972 547 231 170
>>>> Fax: (972)-25662581
>>>>
>>>> C.E.O, Weather It Is, LTD
>>>> Weather and Climate Focus
>>>> http://weather-it-is.com
>>>> Jerusalem, Israel
>>>> Local: 02 930 9525
>>>> Cell: 054 7 231 170
>>>> Int-IS: x972 2 930 9525
>>>> US 914 432 3108 <(914)%20432-3108>
>>>>
>>>
>>>
>>>
>>> --
>>> Barry H. Lynn, Ph.D
>>> Senior Lecturer,
>>> The Institute of the Earth Science,
>>> The Hebrew University of Jerusalem,
>>> Givat Ram, Jerusalem 91904, Israel
>>> Tel: 972 547 231 170
>>> Fax: (972)-25662581
>>>
>>> C.E.O, Weather It Is, LTD
>>> Weather and Climate Focus
>>> http://weather-it-is.com
>>> Jerusalem, Israel
>>> Local: 02 930 9525
>>> Cell: 054 7 231 170
>>> Int-IS: x972 2 930 9525
>>> US 914 432 3108 <(914)%20432-3108>
>>>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>
>>>
>>
>
>
> --
> Barry H. Lynn, Ph.D
> Senior Lecturer,
> The Institute of the Earth Science,
> The Hebrew University of Jerusalem,
> Givat Ram, Jerusalem 91904, Israel
> Tel: 972 547 231 170
> Fax: (972)-25662581
>
> C.E.O, Weather It Is, LTD
> Weather and Climate Focus
> http://weather-it-is.com
> Jerusalem, Israel
> Local: 02 930 9525
> Cell: 054 7 231 170
> Int-IS: x972 2 930 9525
> US 914 432 3108 <(914)%20432-3108>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20171121/8f29e36b/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hist.png
Type: image/png
Size: 26910 bytes
Desc: not available
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20171121/8f29e36b/attachment.png>


More information about the ncl-talk mailing list