选项卡式图中的子图
Subplots within a Tabbed figure
对于以下脚本,subplots/plots 在执行时位于选项卡后面。如何解决?
h.mainfig = figure();
h.tabgroup = uitabgroup(h.mainfig, 'Position', [.05 .1 .9 .8]);
ntabs = 4;
for ii = 1:ntabs
h.tab(ii) = uitab(h.tabgroup, 'Title', sprintf('Tab_%i', ii));
for jj=1:2
ax(jj)=subplot(2,1,jj);plot(1:10,sin(1:10));
end
linkaxes(ax,'x');
end
这是由于错误调用了subplot
;看起来 Matlab 创建了太多轴,并且由于某种原因它们被放置在选项卡上。
解决这个问题的一个安全方法是首先在进入嵌套 for 循环之前创建一个轴,然后子图将被正确放置。
示例代码:
clear
clc
close all
mainfig = figure();
tabgroup = uitabgroup(mainfig, 'Position', [.05 .1 .9 .8]);
for k = 1:4
tab(k)=uitab(tabgroup,'Title', sprintf('Tab_%i', k));
axes('parent',tab(k))
for jj = 1:2
subplot(2,1,jj);
plot(1:10,(1:10).^k);
end
end
几张截图:
和
耶!
对于以下脚本,subplots/plots 在执行时位于选项卡后面。如何解决?
h.mainfig = figure();
h.tabgroup = uitabgroup(h.mainfig, 'Position', [.05 .1 .9 .8]);
ntabs = 4;
for ii = 1:ntabs
h.tab(ii) = uitab(h.tabgroup, 'Title', sprintf('Tab_%i', ii));
for jj=1:2
ax(jj)=subplot(2,1,jj);plot(1:10,sin(1:10));
end
linkaxes(ax,'x');
end
这是由于错误调用了subplot
;看起来 Matlab 创建了太多轴,并且由于某种原因它们被放置在选项卡上。
解决这个问题的一个安全方法是首先在进入嵌套 for 循环之前创建一个轴,然后子图将被正确放置。
示例代码:
clear
clc
close all
mainfig = figure();
tabgroup = uitabgroup(mainfig, 'Position', [.05 .1 .9 .8]);
for k = 1:4
tab(k)=uitab(tabgroup,'Title', sprintf('Tab_%i', k));
axes('parent',tab(k))
for jj = 1:2
subplot(2,1,jj);
plot(1:10,(1:10).^k);
end
end
几张截图:
和
耶!