MATLAB Answers

Add xline equivalent to stackedplot?

28 views (last 30 days)
Brock Carlson
Brock Carlson on 28 Jan 2020
Commented: Adam Danz on 24 Nov 2020
Hi there,
I recently started using stackedplot instead of subplot, but I'm not sure how to add a line from 0 to my Y-axis-limit while using the stackedplot funciton.
While using subplot in the past, I have been able to use xline(0) or vline(0) to represent a stimulus onset time when comparing evoked responses across a certain timecourse. I.e.
%%%%% Using xline in subplots
close all
time = -150:1:349; %This is time in ms relative to stimulus onset at time 0
maxYval = max(max(PlotThis));
figure
for i = 1:3
subplot(3,1,i)
plot(time,PlotThis(:,i));
hold on
xline(0)
ylim([0 maxYval])
end
TraditionalXlineWithSubplot.jpg
I would like to use stackedplots instead of subplot because it is much easier to edit and manage when I have several plots with the same x-axis. The one drawback is that stackedplots does not allow the "hold on" feature so xline(0) or vline(0) does not work. I can insert a line in-post on the matlab figure editor, but is there a way to do this programitically?
i.e.
%%% using stackedplot
figure
s = stackedplot(time,PlotThis);
s.AxesProperties(1).YLimits = [0 maxYVal];
s.AxesProperties(2).YLimits = [0 maxYVal];
s.AxesProperties(3).YLimits = [0 maxYVal];
stackedplot.jpg
and inserting a line on the matlab figure editor yields:
stackedplot_withLine.jpg
Thank you!

  0 Comments

Sign in to comment.

Accepted Answer

Adam Danz
Adam Danz on 19 Nov 2020
Edited: Adam Danz on 24 Nov 2020
You can get the axis handles in stackedplot using the undocumented NodeChildren property. Then use xline to add vertical reference lines.
rng('default')
h = stackedplot(-10:10,rand(21,4));
ax = findobj(h.NodeChildren, 'Type','Axes');
arrayfun(@(h)xline(h,0,'LineWidth',1.5),ax)

  2 Comments

Brock Carlson
Brock Carlson on 20 Nov 2020
Adam,
Thank you so much! This is a fascinating work-around. I was able to get this to work with my code.
As a result, I have unaccepted Payas' answer and accepted yours. Should MathWorks create a formal solution in the future I will try to update that here.
Adam Danz
Adam Danz on 24 Nov 2020
Glad I could help.
I just updated the answer with a better way to get axis handles.

Sign in to comment.

More Answers (1)

Payas Bahade
Payas Bahade on 14 Feb 2020
Hi Brock,
Currently there is no xline equivalent in stacked plots. I have informed the concerned teams and they would be looking into this issue.

  1 Comment

Brock Carlson
Brock Carlson on 17 Feb 2020
Thank you very much! I'll be excited to see updates if they become available.

Sign in to comment.

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!