[ncl-talk] Fewer questions about a Histogram Plot

Barry Lynn barry.h.lynn at gmail.com
Tue Nov 21 10:32:17 MST 2017


Just to add:

The bar graph page says:

Bar charts (in this context) are simply XY plots that are drawn with bars
for each X,Y point. To get bars instead of curves when using *gsn_csm_xy*
<https://www.ncl.ucar.edu/Document/Graphics/Interfaces/gsn_csm_xy.shtml>,
set the special attribute res@*gsnXYBarChart*
<https://www.ncl.ucar.edu/Document/Graphics/Resources/gsn.shtml#gsnXYBarChart>
=
True.

There is a separate page for creating histograms
<https://www.ncl.ucar.edu/Applications/histo.shtml>, where the data is
binned according to ranges of values or actual values.

It may be that I can use bar charts to make graphs directly.  However, it
is written that "data is binned according to ranges of values or actual
values."

Maybe it needs to be clear that the histogram program will bin the data
provided; i.e., it is not expecting to receive already binned data.
Lastly, I did want to plot the bars within ranges, and I am not sure if the
bar graph can do this or not.

Barry




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

> Hi Mary:
>
> That's my point.  The histogram program is taking the data and binning it.
>
> However, I've already binned the data, and the data itself already
> represents the number of data points within each interval.
>
> I am not sure if bar charts would help or not.  I would need to look more
> closely, but when I looked before it didn't seem to solve my problem (but I
> was less experienced before).
>
> Barry
>
> On Tue, Nov 21, 2017 at 7:14 PM, Mary Haley <haley at ucar.edu> wrote:
>
>> 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>
>>>
>>
>>
>
>
> --
> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20171121/cbf9a87c/attachment.html>


More information about the ncl-talk mailing list