Mercurial > hg > octave-lyh
annotate scripts/plot/stemleaf.m @ 16087:2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
author | Rik <rik@octave.org> |
---|---|
date | Thu, 21 Feb 2013 22:31:13 -0800 |
parents | 979ebfdd240d |
children | 3e6d15a2a50b |
rev | line source |
---|---|
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
1 ## Copyright (C) 2013 Michael D. Godfrey |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
2 ## |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
3 ## This file is part of Octave. |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
4 ## |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
5 ## Octave is free software; you can redistribute it and/or |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
6 ## modify it under the terms of the GNU General Public |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
7 ## License as published by the Free Software Foundation; |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
8 ## either version 3 of the License, or (at your option) any |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
9 ## later version. |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
10 ## |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
11 ## Octave is distributed in the hope that it will be useful, |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
12 ## but WITHOUT ANY WARRANTY; without even the implied |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
13 ## warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
14 ## PURPOSE. See the GNU General Public License for more |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
15 ## details. |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
16 ## |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
17 ## You should have received a copy of the GNU General Public |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
18 ## License along with Octave; see the file COPYING. If not, |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
19 ## see <http://www.gnu.org/licenses/>. |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
20 |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
21 |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
22 ## -*- texinfo -*- |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
23 ## @deftypefn {Function File} {} stemleaf (@var{x}) |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
24 ## @deftypefnx {Function File} {@var{plot} =} stemleaf (@var{x}, @var{opt}) |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
25 ## |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
26 ## Compute and display a stem and leaf plot of the vector @var{x}. |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
27 ## |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
28 ## The @var{x} vector is converted to integer by @var{x} = @code{fix} (@var{x}). |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
29 ## If an output argument is provided, the plot is returned as |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
30 ## an array of strings. The first element is the heading |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
31 ## followed by an element for each stem. |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
32 ## The default stem step is 10. |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
33 ## The @var{x} vector should be integers. It will be treated so that |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
34 ## the last digit is the leaf value and the other digits are |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
35 ## the stems. |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
36 ## The leaf digits are not sorted. If sorted leaf values |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
37 ## are wanted, use @code{sort} (@var{x}) before calling @code{stemleaf} (@var{x}). |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
38 ## The stem and leaf plot is described in: Ch. 3, |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
39 ## Exploratory Data Analysis by J. W. Tukey, Addison-Wesley, 1977. |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
40 ## @seealso{hist, printd} |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
41 ## @end deftypefn |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
42 |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
43 ## Author: Michael D. Godfrey <michaeldgodfrey@gmail.com> |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
44 ## Description: Compute stem and leaf plot |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
45 |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
46 function varargout = stemleaf (x, stem_unit) |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
47 ## Compute and display a stem and leaf plot of the vector x. The x |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
48 ## vector is converted to integer by x = fix(x). If an output argument |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
49 ## is provided, the plot is returned as an array of strings. The |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
50 ## first element is the heading followed by an element for each stem. |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
51 ## |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
52 ## The default stem step is 10. If stem_unit is provided the stem |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
53 ## step is set to: 10^(stem_unit+1) The x vector should be integers. |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
54 ## It will be treated so that the last digit is the leaf value and the |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
55 ## other digits are the stems. |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
56 ## |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
57 ## When we first implemented stem and leaf plots in the early 1960's |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
58 ## there was some discussion about sorting vs. leaving the leaf |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
59 ## entries in the original order in the data. We decided in favor or |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
60 ## sorting the leaves for most purposes. This is the choice |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
61 ## implemented in the SNAP/IEDA system that was written at that time. |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
62 ## |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
63 ## SNAP/IEDA and particularly its stem and leaf plotting were further |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
64 ## developed by Hale Trotter, David Hoagland (at Princeton and MIT) |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
65 ## and others. |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
66 ## |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
67 ## Tukey, in EDA, generally uses unsorted leaves. In addition, he |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
68 ## described a wide range of additional display formats. This |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
69 ## implementation does not sort the leaves, but if the x vector is |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
70 ## sorted then the leaves come out sorted. A simple display format is |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
71 ## used. |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
72 ## |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
73 ## I doubt if providing other options is worthwhile. The code can |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
74 ## quite easily be modified to provide specific display results. Or, |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
75 ## the returned output string can be edited. The returned output is an |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
76 ## array of strings with each row containing a line of the plot |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
77 ## preceded by the lines of header text as the first row. This |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
78 ## facilitates annotation. |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
79 ## |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
80 ## Note that the code has some added complexity due to the need to |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
81 ## distinguish both + and - 0 stems. The +- stem values are essential |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
82 ## for all plots which span 0. After dealing with +-0 stems, the added |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
83 ## complexity of putting +- data values in the correct stem is minor, |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
84 ## but the sign of 0 leaves must be checked. And, the cases where the |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
85 ## stems start or end at +- 0 must also be considered. |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
86 ## |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
87 ## The fact that IEEE floating point defines +- 0 helps make this |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
88 ## easier. |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
89 ## |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
90 ## |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
91 ## Michael D. Godfrey January 2013 |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
92 |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
93 ## More could be implemented for better data scaling. And, of course, |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
94 ## other options for the kinds of plots described by Tukey could be |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
95 ## provided. This may best be left to users. |
16085 | 96 |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
97 if (nargin >= 2) |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
98 stem_step = 10^(stem_unit+1); |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
99 else |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
100 stem_step = 10; |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
101 endif |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
102 if (any (x == int32 (x)) == 0) |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
103 printf ('Input vector truncated to integer values.\n') |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
104 x = fix (x); |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
105 endif |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
106 |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
107 ## Avoid use of int32 due to: |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
108 |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
109 ## floor (int32 (-44)/10) == -4 and floor (int32 (-46)/10) = -5 !!! |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
110 ## x = sort (fix (x)); % User can decide about sorting x. |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
111 ## x = fix (x); |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
112 ## %Adjust scale if too small. |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
113 ## while any(abs((fix(x) - x)) >= abs(x/100)) |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
114 ## x =10*x; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
115 ## endwhile |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
116 |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
117 ## Note that IEEE 754 states that -+ 0 should compare equal. This has |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
118 ## led to C sort (and therefore Octave) treating them as equal. Thus, |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
119 ## sort([ -1 0 -0 1]) yields: -1 0 -0 1. and, sort([-1 -0 0 1]) |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
120 ## yields: -1 -0 0 1. This means that stem-and-leaf plotting cannot |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
121 ## rely on sort to order the data as needed for display. |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
122 |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
123 if (all((sort(x) == x)) == 1) |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
124 hsort = 'sorted.'; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
125 else |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
126 hsort = 'unsorted.'; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
127 endif |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
128 nx = max (size (x)); |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
129 ## Determine stem values |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
130 if (min(x) < 0) |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
131 if (signbit(max(x)) == 0) # max is positive |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
132 stems = [fix(min(x)/stem_step)-1 : -1 -0]; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
133 stems = [stems 0 : fix(max(x)/stem_step)+1 ]; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
134 else |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
135 if (max(x) < 0) |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
136 stems = [(fix(min(x)/stem_step)-1) : fix(max(x)/stem_step)]; |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
137 else |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
138 stems = [(fix(min(x)/stem_step)-1) : -1 -0]; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
139 stems = [stems 0 : fix(max(x)/stem_step)]; |
16085 | 140 endif |
141 endif | |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
142 else # All stems are > 0 |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
143 stems = [fix(min(x)/stem_step) : fix(max(x)/stem_step) + 1]; |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
144 endif |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
145 ##stems |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
146 ##x |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
147 nstems = max(size(stems)); |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
148 ## compute hinges at +- 1.5 * quartiles |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
149 ## this requires sorted data! |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
150 xs = sort (x); # Note that sort preserves -0 |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
151 threeh = 1.5; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
152 two = 2.0; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
153 j = idivide(nx, 4, "fix") + 1; # Use F95 truncation. |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
154 k = nx - j + 1; |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
155 hl = xs (j); |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
156 hu = xs (k); |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
157 if ( (nx + 1) == (4 * j) ) |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
158 hl = (xs (j + 1) + hl) / two; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
159 hu = (xs (k - 1) + hu) / two; |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
160 endif |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
161 |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
162 ## :::::::: determine h-spread (dh) and fences :::::::: |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
163 dh = hu - hl; |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
164 fu = hu + threeh * dh; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
165 fl = hl - threeh * dh; |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
166 |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
167 ## :::::::: find value adjacent to lower fence :::::::: |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
168 for i = 1:j |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
169 if ( xs (i) >= fl ) |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
170 continue; |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
171 endif |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
172 endfor |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
173 ilow = i; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
174 xlo = xs (ilow); |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
175 |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
176 ## :::::::: find value adjacent to upper fence :::::::: |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
177 for i = 1:j |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
178 if ( xs (nx -i + 1) <= fu ) |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
179 continue; |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
180 endif |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
181 endfor |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
182 |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
183 ihi = nx - i + 1; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
184 xhi = xs (ihi); |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
185 |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
186 ## Heading for output: |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
187 plot_out = ""; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
188 plot_out = [plot_out sprintf("stem step: %i, data: %s\nHinges: lo: %g, hi: %g\n", |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
189 stem_step, hsort, xlo, xhi)]; |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
190 |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
191 ## This may appear to be a good place to use vectorization using the |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
192 ## stem and data arrays but the necessary special case treatment of 0 |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
193 ## and -0 seems to result in little reduction of complexity, and since |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
194 ## this algorithm is for small data vectors only there would be |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
195 ## practically no performance improvement. |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
196 |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
197 ## Determine leaves for each stem: |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
198 for kx = 2:nstems |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
199 line_out = ""; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
200 steml = ""; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
201 ## Build a string of leaf digits for stem(kx) if stem(kx) <= 0, or |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
202 ## stem(kx-1) if stem(kx) > 0 |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
203 |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
204 ## stems -+ 0 have to be handled as special cases. |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
205 for xi = 1:nx |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
206 if(signbit(stems(kx)) != 0) |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
207 t1 = ((x(xi) <= stems(kx)*10) && (x(xi) > (stems(kx-1)*10))); |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
208 else |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
209 t1 = ((x(xi) < stems(kx)*10) && (x(xi) >= (stems(kx-1)*10))); |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
210 endif |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
211 ## Special tests for stem -+ 0 |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
212 if ((stems(kx) == 0) && signbit(stems(kx)) && (x(xi) == 0)) && !signbit(x(xi)) |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
213 t1 = 0; |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
214 endif |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
215 if ((stems(kx-1) == 0) && !signbit(stems(kx-1)) && (x(xi) == 0)) && signbit(x(xi)) |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
216 t1 = 0; |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
217 endif |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
218 ## Create line as a string |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
219 if t1 |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
220 if (stems(kx) <= 0) |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
221 xz = abs (x(xi) - stems(kx)*10); |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
222 else |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
223 xz = abs (x(xi) - stems(kx-1)*10); |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
224 endif |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
225 if ((stems(kx) == 0) && signbit(stems(kx))) |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
226 steml = [steml sprintf("%d", abs(x(xi) - stems(kx)*10))]; |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
227 else |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
228 steml = [steml sprintf("%d", xz)]; |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
229 endif |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
230 endif % t1 |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
231 endfor % xi = 1:nx |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
232 |
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
233 ## Set correct -0 |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
234 if ((stems(kx) == 0) && signbit(stems(kx))) |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
235 line_out = [line_out sprintf(" -0 | %s", steml)]; % -0 stem. |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
236 else |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
237 if( stems(kx) < 0) |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
238 line_out = [line_out sprintf("%4d | %s", stems(kx), steml)]; |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
239 else |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
240 if stems(kx) > 0 |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
241 line_out = [line_out sprintf("%4d | %s", stems(kx-1), steml)]; |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
242 endif |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
243 endif |
16006
9978c44ab12c
Style fixes on printd.m and stemleaf.m
Jordi Gutiérrez Hermoso <jordigh@octave.org>
parents:
16005
diff
changeset
|
244 endif |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
245 plot_out = [plot_out; line_out]; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
246 endfor % kx = 2:nstems |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
247 if (nargout == 0) |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
248 rows = size (plot_out)(1); |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
249 cols = size (plot_out)(2); |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
250 for k = 1:rows |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
251 printf("%s\n", plot_out(k,1:cols)); |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
252 endfor |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
253 else |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
254 varargout{1} = plot_out; |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
255 endif |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
256 endfunction |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
257 |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
258 %!demo |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
259 %! ## Unsorted plot: |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
260 %! x = [-22 12 -28 52 39 -2 12 10 11 11 42 38 44 18 44]; |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
261 %! stemleaf (x, 0); |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
262 |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
263 %!demo |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
264 %! ## Sorted leaves: |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
265 %! x = [-22 12 -28 52 39 -2 12 10 11 11 42 38 44 18 44]; |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
266 %! y = sort(x); |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
267 %! stemleaf (y, 0); |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
268 |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
269 %!demo |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
270 %! ## More data (sorted) |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
271 %! x = [-22 12 -28 52 39 -2 12 10 11 11 42 38 44 18 44 37 113 124 37 48 127 36 29 31 125 139 131 115 105 132 104 123 35 113 122 42 117 119 58 109 23 105 63 27 44 105 99 41 128 121 116 125 32 61 37 127 29 113 121 58 114 126 53 114 96 25 109 7 31 141 46 -13 71 43 117 116 27 7 68 40 31 115 124 42 128 52 71 118 117 38 27 106 33 117 116 111 40 119 47 105 57 122 109 124 115 43 120 43 27 27 18 28 48 125 107 114 34 133 45 120 30 127 31 116 146 21 23 30 10 20 21 30 0 100 110 1 20 0 ]; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
272 %! y = sort(x); |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
273 %! stemleaf (y, 0); |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
274 |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
275 %!test |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
276 %! ## test minus to plus |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
277 %! x = [-22 12 -28 52 39 -2 12 10 11 11 42 38 44 18 44 37 113 124 37 48 127 36 29 31 125 139 131 115 105 132 104 123 35 113 122 42 117 119 58 109 23 105 63 27 44 105 99 41 128 121 116 125 32 61 37 127 29 113 121 58 114 126 53 114 96 25 109 7 31 141 46 -13 71 43 117 116 27 7 68 40 31 115 124 42 128 52 71 118 117 38 27 106 33 117 116 111 40 119 47 105 57 122 109 124 115 43 120 43 27 27 18 28 48 125 107 114 34 133 45 120 30 127 31 116 146 21 23 30 10 20 21 30 0 100 110 1 20 0 ]; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
278 %! x = sort(x); |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
279 %! r2 = ["stem step: 10, data: sorted.\nHinges: lo: 30, hi: 116\n";... |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
280 %! " -2 | 82";" -1 | 3";" -0 | 2";" 0 | 00177";... |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
281 %! " 1 | 00112288";" 2 | 001133577777899";... |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
282 %! " 3 | 000111123456777889";" 4 | 00122233344456788";... |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
283 %! " 5 | 223788";" 6 | 138";" 7 | 11";" 8 | ";... |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
284 %! " 9 | 69";" 10 | 04555567999";" 11 | 0133344455566667777899";... |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
285 %! " 12 | 0011223444555677788";" 13 | 1239";" 14 | 16"]; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
286 %! rx = stemleaf (x, 0); |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
287 %! assert(r2, rx); |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
288 %!test |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
289 %! ## positive values above 0 |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
290 %! x = [22 12 28 52 39 12 11 11 42 38 44 18 44 ]; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
291 %! r2 = ["stem step: 10, data: unsorted.\nHinges: lo: 12, hi: 42\n";... |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
292 %! " 1 | 22118";" 2 | 28";" 3 | 98";" 4 | 244";" 5 | 2"]; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
293 %! rx = stemleaf (x, 0); |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
294 %! assert(r2, rx); |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
295 %!test |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
296 %! ## negative values below 0 |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
297 %! x = [22 12 28 52 39 12 11 11 42 38 44 18 44]; |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
298 %! x = -x; |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
299 %! r2 = ["stem step: 10, data: unsorted.\nHinges: lo: -42, hi: -12\n";... |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
300 %! " -5 | 2";" -4 | 244";" -3 | 98";" -2 | 28";" -1 | 22118"]; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
301 %! rx = stemleaf (x, 0); |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
302 %! assert(r2, rx); |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
303 %!test |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
304 %! ## positive values from 0 |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
305 %! x = [22 12 28 52 39 2 12 0 11 11 42 38 44 18 44]; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
306 %! r2 = ["stem step: 10, data: unsorted.\nHinges: lo: 11, hi: 42\n";... |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
307 %! " 0 | 20";" 1 | 22118";" 2 | 28";" 3 | 98";" 4 | 244";" 5 | 2"]; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
308 %! rx = stemleaf (x, 0); |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
309 %! assert(r2, rx); |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
310 %!test |
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
311 %! ## negative values from 0 |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
312 %! x = [22 12 28 52 39 2 12 0 11 11 42 38 44 18 44]; |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
313 %! x = -x; |
16087
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
314 %! r2 = ["stem step: 10, data: unsorted.\nHinges: lo: -42, hi: -11\n";... |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
315 %! " -5 | 2";" -4 | 244";" -3 | 98";" -2 | 28";" -1 | 22118";" -0 | 20"]; |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
316 %! rx = stemleaf (x, 0); |
2b994ee38b1c
maint: backout accidental check-in 979ebfdd240d.
Rik <rik@octave.org>
parents:
16085
diff
changeset
|
317 %! assert(r2, rx); |
16005
369b173d6c16
provide stemleaf.m and printd.m
Michael Godfrey <michaeldgodfrey@gmail.com>
parents:
diff
changeset
|
318 |