📄 stackplot.m
字号:
function h = StackPlot(varargin)
% StackPlot -- Plot of stacked curves.
% StackPlot(x, y, 'theColor', ...) plots the columns
% of y(x) adjacent to each other, with a small margin.
% The syntax is exactly the same as for "plot()". The
% "UserData" property of each line contains its column-
% number and the additive-offset from the original value
% of the column.
% StackPlot(m, n, 'theColor') demonstrates itself with a
% random array of size [m+1 n]. The size defaults to
% [20 5].
% Copyright (C) 1996 Dr. Charles R. Denham, ZYDECO.
% All Rights Reserved.
% Version of 5-Jun-96 at 12:07:42.99.
% Version of 28-Aug-1997 09:07:13.
if nargin < 1, help(mfilename), varargin{1} = 20; end
if isstr(varargin{1})
if strcmp(varargin{1}, 'demo')
varargin{1} = 20;
else
varargin{1} = eval(varargin{1});
end
end
if length(varargin{1}) == 1
m = varargin{1}; n = fix((m+3)./4);
if nargin > 1, n = varargin{2}; end
x = 1:m;
y = sin(sort(rand(m, n)) * n * pi);
figure('Name', 'StackPlot');
if nargin < 3
hh = stackplot(x, y);
else
theColor = varargin{3};
hh = stackplot(x, y, theColor);
end
if exist('findpt') == 2
findpt(hh)
end
if exist('zoomsafe') == 2
zoomsafe
end
if nargout > 0, h = hh; end
return
end
theYIndex = 1;
if nargin > 1 & ~isstr(varargin{2})
theYIndex = 2;
end
y = squeeze(varargin{theYIndex});
y = reshape(y, size(y, 1), prod(size(y))./size(y, 1));
[m, n] = size(y);
if m > 1
theMargin = (max(max(y)) - min(min(y))) ./ (10 .* n);
theOffset = zeros(1, n);
for j = 2:n
theOffset(j) = max(y(:, j-1)) - min(y(:, j)) + theMargin;
y(:, j) = y(:, j) + theOffset(j);
end
else
theOffset = 0;
end
varargin{theYIndex} = y;
hh = plot(varargin{:});
for theIndex = 1:length(hh)
set(hh(theIndex), 'UserData', [theIndex theOffset(theIndex)])
end
if nargout > 0, h = hh; end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -