Add xline equivalent to stackedplot?

39 次查看(过去 30 天)
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!

采纳的回答

Adam Danz
Adam Danz 2020-11-19
编辑:Adam Danz 2023-11-20
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)
% Starting R2021a, xline and yline can accept an array of handles
% xline(ax,0,'LineWidth',1.5)
  7 个评论
Adam Danz
Adam Danz 2021-11-3
编辑:Adam Danz 2021-11-3
I don't know when this option became available but in Matlab R2021b you can enter mutliple values for xline and yline.
xline(1:5,'k-', {'a' 'b' 'c' 'd' 'e'})
xlim([1,5.5])
Oscar
Oscar 2022-8-9
Great answer. Unfortunately, this method doesn't seem to work when the figure is embedded in a Live Script.

请先登录,再进行评论。

更多回答(1 个)

Payas Bahade
Payas Bahade 2020-2-14
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.
  2 个评论
Brock Carlson
Brock Carlson 2020-2-17
Thank you very much! I'll be excited to see updates if they become available.
Nicolas
Nicolas 2023-9-5
Hello Payas,
Any update on this? Stacked plots are really neat to quickly draw stuff, adding the ability to add annotations such as vline would be a real plus!

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Line Plots 的更多信息

产品


版本

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by