subplot automatically fill in next position for selection of plots in for loop
24 次查看(过去 30 天)
显示 更早的评论
I have a state variable that ranges from 1:20 but I only want to plot 4:11 in a 2x4 grid.
I'm trying to use the subplot function, but I can't figure out how to make the plots show up in the position I want them to.
Essential what I have is
state = 4;
subplot(2,4,1)
for state = 5:11;
subplot(2,4,state)
end
but when I have the position for states 5:11 as "state" it offsets them as if those other states I'm not selecting were there, and I end up with this

is there a way to have the 5:11 plots just fill in the next position without having to write them out one at a time? I've tried [2:8] and that didn't work.
0 个评论
采纳的回答
dpb
2025-11-26,21:22
编辑:dpb
2025-11-26,21:46
The subplots are sequentially numbered from 1:N as given in the construction. To use yours just
...
for state = 5:11
subpltIdx=state-4;
subplot(2,4,subpltIdx)
...
% plot stuff goes here...
end
...
tiledlayout(2,4)
...
for state = 5:11
nexttile
...
% plot stuff goes here...
end
While neither requires it, I would strongly recommend you save the handles to the axes in a 2D array on creation -- then one can access whichever axis is needed directly to make any later changes needed.
2 个评论
dpb
2025-11-28,14:56
Just a comment on the indexing...when have something of this sort with the subplot() construct where need the second counter, the alternate way besides the difference is something like
...
subpltIdx=0; % initialize a second counter
for state = 5:11
subpltIdx=subpltIdx+1; % increment the counter
...
This can be very effective in many situations to decouple the other counter from the loop index but keep in synch...
更多回答(1 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Subplots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!