Hi all,
I can't seem to find a solution for this simple problem:
I have a for loop with an output of 8 plots. I would like to group them as they come out in 2 subplots of 4. How can I do this?
KR,
KMT.

 採用された回答

Cedric
Cedric 2017 年 10 月 2 日
編集済み: Cedric 2017 年 10 月 2 日

7 投票

figure() ;
for plotId = 1 : 4
subplot(2, 2, plotId) ;
plot(x{plotId}, y{plotId}) ;
end
figure() ;
for plotId = 1 : 4
subplot(2, 2, plotId) ;
plot(x{plotId+4}, y{plotId+4}) ;
end
or in one loop, but it adds some complexity that may not be that useful:
for plotId = 1 : 8
if ~mod(plotId-1, 4)
figure() ;
end
subplot(2, 2, mod(plotId-1, 4)+1) ;
plot(x{plotId}, y{plotId}) ;
end
Finally, if you wanted to define your own axes to avoid all the space left by SUBPLOT and fit your 8 plots in one figure, you could do it as illustrated in my answer here:

4 件のコメント

Konstantinos Tsitsilonis
Konstantinos Tsitsilonis 2017 年 10 月 2 日
Thanks for your answer!
Is there a way to do it without splitting it into two loops? I am asking cause I get my results form a for loop so it would be very convenient to run one subplot command if possible within that for loop.
Cedric
Cedric 2017 年 10 月 2 日
編集済み: Cedric 2017 年 10 月 2 日
See my updated answer. Sorry, I apparently updated it while you were reading the first version.
You can see how that works by evaluating a few expressions:
>> mod((1:8)-1, 4)
ans =
0 1 2 3 0 1 2 3
>> ~mod((1:8)-1, 4) % For triggering the creation of a new figure.
ans =
1×8 logical array
1 0 0 0 1 0 0 0
>> mod((1:8)-1, 4)+1 % For indexing the sub plot.
ans =
1 2 3 4 1 2 3 4
Konstantinos Tsitsilonis
Konstantinos Tsitsilonis 2017 年 10 月 2 日
Very elegant! Thank you for your answer, works very well
Cedric
Cedric 2017 年 10 月 3 日
My pleasure!

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!

Translated by