【发布时间】:2015-03-17 12:08:46
【问题描述】:
我在 Matlab 中有以下代码,它通过 for 循环运行,从文件中读取数据并绘制 9 个不同的数字,它们对应于我的数据中的一些特定“通道”,所以我决定在 for 循环中注释它们.
clear
clc
for i=1:9
subplot(3,3,i);
hold on
x = [4 13]; % from your example
y = ([1 1]); % from your example
y2 = ([-0.4 -0.4]);
H=area(x,y,'LineStyle','none',...
'FaceColor',[1 0.949019610881805 0.866666674613953]);
H1=area(x,y2,'LineStyle','none',...
'FaceColor',[1 0.949019610881805 0.866666674613953]);
% Create textbox
annotation('textbox',...
[0.719849840255583 0.603626943005185 0.176316293929713 0.308290155440411],...
'String',{'FABLIGHT04','Channel',i},...
'FontWeight','bold',...
'FontSize',10,...
'FontName','Geneva',...
'FitBoxToText','off',...
'EdgeColor','none');
axis([0 24 -0.4 1])
set(gca,'XTick',[0:1:24])
set(gca,'YTick',[-0.4:0.2:1])
xlabel('Time (s)');
end
最初它给了我 9 个不同的数字,并且注释工作正常。但我希望能够将它们平铺到子图上以便于比较。
自从我切换到使用子图后,它没有正确注释我的图形。在打开编辑坞并生成代码时,我发现 matlab 会先绘制所有内容,然后将注释框放在同一个图中,一个在另一个之上。查看它生成的代码,它显然取了这部分代码:
annotation('textbox',...
[0.719849840255583 0.603626943005185 0.176316293929713 0.308290155440411],...
'String',{'FABLIGHT04','Channel',i},...
'FontWeight','bold',...
'FontSize',10,...
'FontName','Geneva',...
'FitBoxToText','off',...
'EdgeColor','none');
然后这样做:
annotation(figure1,'textbox'...)
etc etc
因此,对于所有 9 个文本框,它将它们放在同一个图形上。我试着做S=subplot(3,3,i) 然后annotation(S,'textbox') etc etc,我也试过S(i)=subplot(3,3,i) 然后annotation(S,'textbox') etc etc 但似乎没有任何效果。
我也试过改变盒子的位置。我似乎也不知道如何使它变小。
有人知道如何在 for 循环的右侧子图中添加注释框吗?
谢谢
【问题讨论】:
-
你能发布一个小数据集,我们可以用它来重现错误吗?谢谢!
-
嗨,我现在更改了代码,这样您就不需要我正在使用的文件了。所以你现在应该可以重现错误了。。谢谢
标签: matlab plot annotations matlab-figure subplot