Subplots in a for loop- find the mistake
1 次查看(过去 30 天)
显示 更早的评论
Dear all,
I want to create a plot with n subplots. The problem here is that all the subplots are the same (see picture), but they shouldn't as the data in the cell 'M' alters. I guess it is some mistake with 'hold off' (but I tried to put it nearly everywhere) or the looping of the cell, but can't find it.
figure
cl={'r','y','g'};
subplot(n+1,1,1),plot(P_est)
for m=2:n+1;
subplot(n+1,1,m);
hold off
for p=1:n;
for q=1:t;
xx=[q-1,q] ;
plot([ xx fliplr(xx) xx(1)],[0 0 1 1 0],cl{M{1,p}(q)+1},'linewidth',12)
hold on
end
end
end
Thanks!
0 个评论
采纳的回答
Geoff Hayes
2014-7-1
I don't think that the hold off is the problem, and it can probably be removed due to the hold on that follows.
The outer loop, for m=2:n+1; updates each of the six (colourful!) subplots that follow the initial subplot. But aside from
subplot(n+1,1,m);
nothing else in that loop relies upon m. So in the block of code
for p=1:n;
for q=1:t;
xx=[q-1,q] ;
plot([ xx fliplr(xx) xx(1)],[0 0 1 1 0],cl{M{1,p}(q)+1},'linewidth',12)
hold on
end
end
there is no dependence upon m, and so each subplot will be drawn identically. It may be that the cell array M should include the m parameter (somehow).
2 个评论
Geoff Hayes
2014-7-1
Awesome!
As for resizing the seven bars to be smaller than the first plot, you could try the following. Grab the position of the subplot (using its handle). The position will be a 4 element vector with [x y width height] components. Reduce the element that corresponds to height, and reset the position:
h = subplot(n+1,1,m); % get the handle to the subplot
plotDims = get(h,'Position'); % get the subplot dimensions
plotDims(4) = plotDims(4)/5; % shrink the height by a factor of 5
set(h,'Position', plotDims); % reset
Try doing this before you do the plotting, but if that doesn't work, then just do it once you've iterated over p.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Subplots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!