-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathshadedplot.m
66 lines (60 loc) · 2.02 KB
/
shadedplot.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
function [ha hb hc] = shadedplot(x, y1, y2, varargin)
% SHADEDPLOT draws two lines on a plot and shades the area between those
% lines.
%
% SHADEDPLOT(x, y1, y2)
% All of the arguments are vectors of the same length, and each y-vector is
% horizontal (i.e. size(y1) = [1 N]). Vector x contains the x-axis values,
% and y1:y2 contain the y-axis values.
%
% Plot y1 and y2 vs x, then shade the area between those two
% lines. Highlight the edges of that band with lines.
%
% SHADEDPLOT(x, y1, y2, areacolor, linecolor)
% The arguments areacolor and linecolor allow the user to set the color
% of the shaded area and the boundary lines. These arguments must be
% either text values (see the help for the PLOT function) or a
% 3-element vector with the color values in RGB (see the help for
% COLORMAP).
%
% [HA HB HC] = SHADEDPLOT(x, y1, y2) returns three handles to the calling
% function. HA is a vector of handles to areaseries objects (HA(2) is the
% shaded area), HB is the handle to the first line (x vs y1), and HC is
% the handle to the second line (x vs y2).
%
% Example:
%
% x1 = [1 2 3 4 5 6];
% y1 = x1;
% y2 = x1+1;
% x3 = [1.5 2 2.5 3 3.5 4];
% y3 = 2*x3;
% y4 = 4*ones(size(x3));
% ha = shadedplot(x1, y1, y2, [1 0.7 0.7], 'r'); %first area is red
% hold on
% hb = shadedplot(x3, y3, y4, [0.7 0.7 1]); %second area is blue
% hold off
% plot the shaded area
y = [y1; (y2-y1)]';
ha = area(x, y);
set(ha(1), 'FaceColor', 'none') % this makes the bottom area invisible
set(ha, 'LineStyle', 'none')
% plot the line edges
hold on
hb = plot(x, y1, 'LineWidth', 0.01);
hc = plot(x, y2, 'LineWidth', 0.01);
hold off
% set the line and area colors if they are specified
switch length(varargin)
case 0
case 1
set(ha(2), 'FaceColor', varargin{1})
case 2
set(ha(2), 'FaceColor', varargin{1})
set(hb, 'Color', varargin{2})
set(hc, 'Color', varargin{2})
otherwise
end
% put the grid on top of the colored area
set(gca, 'Layer', 'top')
% grid on