Mercurial > octave-nkf
annotate scripts/plot/pareto.m @ 14237:11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Add clf() to all demos using plot features to get reproducibility.
Use 64 as input to all colormaps (jet (64)) to get reproducibility.
* bicubic.m, cell2mat.m, celldisp.m, cplxpair.m, interp1.m, interp2.m,
interpft.m, interpn.m, profile.m, profshow.m, convhull.m, delaunay.m,
griddata.m, inpolygon.m, voronoi.m, autumn.m, bone.m, contrast.m, cool.m,
copper.m, flag.m, gmap40.m, gray.m, hot.m, hsv.m, image.m, imshow.m, jet.m,
ocean.m, pink.m, prism.m, rainbow.m, spring.m, summer.m, white.m, winter.m,
condest.m, onenormest.m, axis.m, clabel.m, colorbar.m, comet.m, comet3.m,
compass.m, contour.m, contour3.m, contourf.m, cylinder.m, daspect.m,
ellipsoid.m, errorbar.m, ezcontour.m, ezcontourf.m, ezmesh.m, ezmeshc.m,
ezplot.m, ezplot3.m, ezpolar.m, ezsurf.m, ezsurfc.m, feather.m, fill.m,
fplot.m, grid.m, hold.m, isosurface.m, legend.m, loglog.m, loglogerr.m,
pareto.m, patch.m, pbaspect.m, pcolor.m, pie.m, pie3.m, plot3.m, plotmatrix.m,
plotyy.m, polar.m, quiver.m, quiver3.m, rectangle.m, refreshdata.m, ribbon.m,
rose.m, scatter.m, scatter3.m, semilogx.m, semilogxerr.m, semilogy.m,
semilogyerr.m, shading.m, slice.m, sombrero.m, stairs.m, stem.m, stem3.m,
subplot.m, surf.m, surfc.m, surfl.m, surfnorm.m, text.m, title.m, trimesh.m,
triplot.m, trisurf.m, uigetdir.m, uigetfile.m, uimenu.m, uiputfile.m,
waitbar.m, xlim.m, ylim.m, zlim.m, mkpp.m, pchip.m, polyaffine.m, spline.m,
bicgstab.m, cgs.m, gplot.m, pcg.m, pcr.m, treeplot.m, strtok.m, demo.m,
example.m, rundemos.m, speed.m, test.m, calendar.m, datestr.m, datetick.m,
weekday.m: Revamp %!demos to use Octave coding conventions on spacing, etc.
author | Rik <octave@nomad.inbox5.com> |
---|---|
date | Fri, 20 Jan 2012 12:59:53 -0800 |
parents | 72c96de7a403 |
children | 4506eade9f04 |
rev | line source |
---|---|
14138
72c96de7a403
maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents:
14001
diff
changeset
|
1 ## Copyright (C) 2007-2012 David Bateman |
7220 | 2 ## Copyright (C) 2003 Alberto Terruzzi |
3 ## | |
4 ## This file is part of Octave. | |
5 ## | |
6 ## Octave is free software; you can redistribute it and/or modify it | |
7 ## under the terms of the GNU General Public License as published by | |
8 ## the Free Software Foundation; either version 3 of the License, or (at | |
9 ## your option) any later version. | |
10 ## | |
11 ## Octave is distributed in the hope that it will be useful, but | |
12 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
14 ## General Public License for more details. | |
15 ## | |
16 ## You should have received a copy of the GNU General Public License | |
17 ## along with Octave; see the file COPYING. If not, see | |
18 ## <http://www.gnu.org/licenses/>. | |
19 | |
20 ## -*- texinfo -*- | |
10793
be55736a0783
Grammarcheck the documentation from m-files.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
21 ## @deftypefn {Function File} {} pareto (@var{x}) |
7220 | 22 ## @deftypefnx {Function File} {} pareto (@var{x}, @var{y}) |
23 ## @deftypefnx {Function File} {} pareto (@var{h}, @dots{}) | |
24 ## @deftypefnx {Function File} {@var{h} =} pareto (@dots{}) | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
25 ## Draw a Pareto chart, also called ABC chart. A Pareto chart is a bar graph |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
26 ## used to arrange information in such a way that priorities for process |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
27 ## improvement can be established. It organizes and displays information |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
28 ## to show the relative importance of data. The chart is similar to the |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
29 ## histogram or bar chart, except that the bars are arranged in decreasing |
7220 | 30 ## order from left to right along the abscissa. |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
31 ## |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
32 ## The fundamental idea (Pareto principle) behind the use of Pareto |
7220 | 33 ## diagrams is that the majority of an effect is due to a small subset of the |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
34 ## causes, so for quality improvement the first few (as presented on the |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
35 ## diagram) contributing causes to a problem usually account for the majority |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
36 ## of the result. Thus, targeting these "major causes" for elimination |
7220 | 37 ## results in the most cost-effective improvement scheme. |
38 ## | |
9040
dbd0c77e575e
Cleanup documentation file plot.texi
Rik <rdrider0-list@yahoo.com>
parents:
8920
diff
changeset
|
39 ## The data are passed as @var{x} and the abscissa as @var{y}. If @var{y} is |
7220 | 40 ## absent, then the abscissa are assumed to be @code{1 : length (@var{x})}. |
41 ## @var{y} can be a string array, a cell array of strings or a numerical | |
42 ## vector. | |
43 ## | |
14001
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
12931
diff
changeset
|
44 ## The optional return value @var{h} is a 2-element vector with a graphics |
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
12931
diff
changeset
|
45 ## handle for the created bar plot and a second handle for the created line |
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
12931
diff
changeset
|
46 ## plot. |
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
12931
diff
changeset
|
47 ## |
7220 | 48 ## An example of the use of @code{pareto} is |
49 ## | |
50 ## @example | |
51 ## @group | |
9153
5247e89688e1
Eliminate most overfull errors when running texi2pdf for generating pdf documentation
Rik <rdrider0-list@yahoo.com>
parents:
9040
diff
changeset
|
52 ## Cheese = @{"Cheddar", "Swiss", "Camembert", ... |
5247e89688e1
Eliminate most overfull errors when running texi2pdf for generating pdf documentation
Rik <rdrider0-list@yahoo.com>
parents:
9040
diff
changeset
|
53 ## "Munster", "Stilton", "Blue"@}; |
7220 | 54 ## Sold = [105, 30, 70, 10, 15, 20]; |
14001
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
12931
diff
changeset
|
55 ## pareto (Sold, Cheese); |
7220 | 56 ## @end group |
57 ## @end example | |
58 ## @end deftypefn | |
59 | |
60 function h = pareto (varargin) | |
61 | |
62 if (nargin != 1 && nargin != 2) | |
63 print_usage (); | |
64 endif | |
65 | |
66 x = varargin {1}(:).'; | |
67 if (nargin == 2) | |
68 y = varargin {2}(:).'; | |
69 if (! iscell (y)) | |
70 if (ischar (y)) | |
10549 | 71 y = cellstr (y); |
7220 | 72 else |
12931
cefd568ea073
Replace function handles with function names in cellfun calls for 15% speedup.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
73 y = cellfun ("num2str", num2cell (y), "uniformoutput", false); |
7220 | 74 endif |
75 endif | |
76 else | |
12931
cefd568ea073
Replace function handles with function names in cellfun calls for 15% speedup.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
77 y = cellfun ("int2str", num2cell (1 : numel(x)), |
11191
01ddaedd6ad5
Reverse changeset b1f4bdc276b6. Use all lower case for "uniformoutput" option.
Rik <octave@nomad.inbox5.com>
parents:
11188
diff
changeset
|
78 "uniformoutput", false); |
7220 | 79 endif |
80 | |
81 [x, idx] = sort (x, "descend"); | |
82 y = y (idx); | |
83 cdf = cumsum (x); | |
7221 | 84 maxcdf = max(cdf); |
85 cdf = cdf ./ maxcdf; | |
7228 | 86 cdf95 = cdf - 0.95; |
87 idx95 = find(sign(cdf95(1:end-1)) != sign(cdf95(2:end)))(1); | |
7220 | 88 |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
89 [ax, hbar, hline] = plotyy (1 : idx95, x (1 : idx95), |
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
90 1 : length(cdf), 100 .* cdf, |
10549 | 91 @bar, @plot); |
7220 | 92 |
93 axis (ax(1), [1 - 0.6, idx95 + 0.6, 0, maxcdf]); | |
94 axis (ax(2), [1 - 0.6, idx95 + 0.6, 0, 100]); | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
95 set (ax(2), "ytick", [0, 20, 40, 60, 80, 100], |
7220 | 96 "yticklabel", {"0%", "20%", "40%", "60%", "80%", "100%"}); |
97 set (ax(1), "xtick", 1 : idx95, "xticklabel", y (1: idx95)); | |
98 set (ax(2), "xtick", 1 : idx95, "xticklabel", y (1: idx95)); | |
99 | |
100 if (nargout > 0) | |
101 h = [hbar; hline]; | |
102 endif | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
103 |
7220 | 104 endfunction |
105 | |
14001
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
12931
diff
changeset
|
106 |
7220 | 107 %!demo |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
108 %! clf; |
14001
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
12931
diff
changeset
|
109 %! colormap (jet (64)); |
7220 | 110 %! Cheese = {"Cheddar", "Swiss", "Camembert", "Munster", "Stilton", "Blue"}; |
111 %! Sold = [105, 30, 70, 10, 15, 20]; | |
14001
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
12931
diff
changeset
|
112 %! pareto (Sold, Cheese); |
7220 | 113 |
114 %!demo | |
14237
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
115 %! clf; |
11949c9795a0
Revamp %!demos in m-files to use Octave coding conventions on spacing, etc.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
116 %! % Suppose that we want establish which products makes 80% of turnover. |
7220 | 117 %! Codes = {"AB4","BD7","CF8","CC5","AD11","BB5","BB3","AD8","DF3","DE7"}; |
118 %! Value = [2.35 7.9 2.45 1.1 0.15 13.45 5.4 2.05 0.85 1.65]'; | |
119 %! SoldUnits = [54723 41114 16939 1576091 168000 687197 120222 168195, ... | |
120 %! 1084118 55576]'; | |
121 %! pareto (Value.*SoldUnits, Codes); | |
14001
5f0bb45e615c
doc: Update documentation for functions returning a graphics handle h (Bug #34761)
Rik <octave@nomad.inbox5.com>
parents:
12931
diff
changeset
|
122 |