plotting confidence interval and creating second axis in one plot

2 次查看(过去 30 天)
I would like to plot two means with their 95% confidence interval around each mean, plus the mean difference including confidence interval in the same plot but on a second axis on the right starting with 0 on the same level as the smaller mean value of the first two means. I came so far as to make the confidence intervals with the errorbar function but cannot figure out how to set a second axis and adjust it to start at the height of the one mean.
I attached a file with an example of how the plot should look like at the end. Thanks for any help!
plot([0 1 2 3],[0,mean_pre2,mean_post1,0],'bo')
hold on
plot([4 5],[mean_diff, 0],'ro')
U = [0,CIpre2_up,CIpost1_up,0,CIdiff_up,0];
L = [0,CIpre2_lo,CIpost1_lo,0,CIdiff_lo,0];
errorbar((0:5),[0,mean(maxAnklePower_pre2),mean(maxAnklePower_post1),0,mean(maxAnklePower_pre2-maxAnklePower_post1), 0],L,U,'o')
  5 个评论
Adam Danz
Adam Danz 2021-9-2
Ha! I'd say you're a quick learner. You just discovered yyaxis and you were already able to address the OP's follow-up comment below my answer.
I frequently learn of long existing functions that I should have been using. The accumulation with every release is getting harder to keep up with.
Bjorn Gustavsson
Bjorn Gustavsson 2021-9-2
@Adam Danz - this is especially so for problems where one has a "kind of working solution" - then it is not as urgent to keep track of the newer better solutions...

请先登录,再进行评论。

采纳的回答

Adam Danz
Adam Danz 2021-9-1
Here's a demo that should get you started.
The alignment of y=0 on the right axis with the first data point at "x" is done at the bottom half of the block below.
data = [3.2 5.2 5];
err = [1.5 .8 1.6];
yyaxis left
ax = gca();
errorbar(ax, data, err, 'ko','LineStyle','none', ...
'MarkerFaceColor','k')
set(ax,'xtick',1:3,...
'xticklabel',{'x','y','difference'},...
'xlim',[0.5, 3.5], 'ylim', [-1,8])
ax.XAxis.Color = 'k';
ax.YAxis(1).Color = 'k';
ax.YAxis(2).Color = 'k';
ylabel('Mean')
% Align 0 on right y-axis with the 'x'datapoint
% at the same scale as the left y-axis
yyaxis right
distanceToLeftAxLims = ax.YAxis(1).Limits - data(1);
ax.YAxis(2).Limits = distanceToLeftAxLims;
% Add horizontal reference line
yline(0, 'k--')
  4 个评论

请先登录,再进行评论。

更多回答(0 个)

类别

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

Community Treasure Hunt

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

Start Hunting!

Translated by