MATLAB Answers

How to change Y-axis in subplots of Boxplot on the same figure

조회 수: 39(최근 30일)
Yaser Khojah
Yaser Khojah 3 Mar 2020
편집: Yaser Khojah 4 Mar 2020
I need help with creating 4 boxplots in one figure where in each subplot I would like to assign the ylim. In this example, the ylim looks nice and no need to change it but in my model I want to change it. Thanks for your help in advance.
% this is just an example and in my code the values vary more. Thus, need to change the ylim in each plot.
r1 = 10*rand(5);
r2 = 100*rand(6);
r3 = 1000*rand(7);
r4 = 10000*rand(8);
r = {r1, r2, r3, r4};
for i = 1:4
subplot1 = subplot(4,1,i);
boxplot(r{i}); hold on
ylim()
end

답변(1개)

Jakob B. Nielsen
Jakob B. Nielsen 4 Mar 2020
You need a reference back to each inidividual subplot. Right now, your subplot1 label is overwritten each time, so you can only refer back to your 4th and final plot. Index it, so you get a reference to all four subplot axes.
r1 = 10*rand(5);
r2 = 100*rand(6);
r3 = 1000*rand(7);
r4 = 10000*rand(8);
r = {r1, r2, r3, r4};
for i = 1:4
subplot1(i) = subplot(4,1,i); %this turns subplot1 into a 1x4 axes
boxplot(r{i}); hold on
end
ylim(subplot(1),[0 100]) %just for example.
  댓글 수: 1
Yaser Khojah
Yaser Khojah 4 Mar 2020
Thanks for your replay but i get 1X16 axes, not sure why. The first 8 say Graphics and the rest of the 8 say Axes?
figure
n = 1;
for i = 9:16
subplot1(n) = subplot(4,2,n);
t_1 = Circle_data_alpha_P2(:,i)';
t_2 = Circle_data_alpha_P1(:,i)';
t_3 = Circle_data_alpha_0(:,i)';
t_4 = Circle_data_alpha_M1(:,i)';
t_5 = Circle_data_alpha_M2(:,i)';
T = [t_1 t_2 t_3 t_4 t_5];
grp = [zeros(1,size(Circle_data_alpha_P2,1)),ones(1,size(Circle_data_alpha_P1,1))...
,2 * ones(1,size(Circle_data_alpha_0,1)), 3*ones(1,size(Circle_data_alpha_M1,1))...
,4*ones(1,size(Circle_data_alpha_M2,1))];
% figure
boxplot(T,grp,'symbol',''); hold on
% boxplot(T,grp); hold on
set(gca,'xticklabel',{'\alpha = +2','\alpha = +1','\alpha = 0','\alpha = -1','\alpha = -2'})
set(gca,'TickLabelInterpreter', 'tex');
% ylim([0 20])
title(sprintf('t^{*}_{%d}',n));
n = 1 +n;
end

댓글을 달려면 로그인하십시오.

태그

Community Treasure Hunt

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

Start Hunting!

Translated by