Is it possible to draw a line across all plots in a stackedplot?

16 views (last 30 days)
figure;
chans = 10;
for subplotN=1:chans-1 %plot first set of time-series
x = 1:2841;
y(:,subplotN) = randn(2841,1)*50;
end
y(:,subplotN+1) = randn(1,2841)*1e6;
stackedplot(x,y)
Is it possible to draw vertical lines across all stackedplots like in the figure below?

Accepted Answer

Ameer Hamza
Ameer Hamza on 20 Apr 2020
Edited: Ameer Hamza on 20 Apr 2020
I am not sure if there is any direct option, but you can use annotation() to draw a line on the figure window such that it appears on the axes at correct locations. Following code shows an example
figure;
chans = 10;
for subplotN=1:chans-1 %plot first set of time-series
x = 1:2841;
y(:,subplotN) = randn(2841,1)*50;
end
y(:,subplotN+1) = randn(1,2841)*1e6;
s = stackedplot(x,y);
pos = s.Position;
xlims = s.xlim;
line_locations = [500 1000 1500 2000 2500];
line_locations_norm = interp1(xlims, cumsum(pos([1 3])), line_locations);
for i=1:numel(line_locations_norm)
annotation('line', ...
[line_locations_norm(i) line_locations_norm(i)], ...
[pos(2) pos(2)+pos(4)], ...
'Color', 'r', ...
'LineWidth', 1);
end
  4 Comments
Bryan Conklin
Bryan Conklin on 22 Apr 2020
Thanks Ameer! I was able to modify that approach to end up with the subplot I needed.

Sign in to comment.

More Answers (0)

Categories

Find more on Line Plots in Help Center and File Exchange

Products


Release

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!