我想在不同的位置制作4个单独的子图。我的目标是首先设置图形,然后向每个图形添加对象,然后再为对象设置动画。在尝试将对象作为子图的父对象之前,一切似乎都可以正常工作。使用以下代码在构建子图形后立即添加对象时,不会发生该错误。
H1 = subplot('Position',[0.2,0.2,0.2,0.2]);
rectangle('Parent',H1,'Position',[10,20,20,20])
当我尝试回调到随后建立的图形时,错误似乎增加了,如下面我当前正在处理的代码所示。
screencolor = [0,0,0];
StimWindow = figure('MenuBar','none', ... % Build Window for stimulus
'Color',screencolor);
figuresize = get(0,'ScreenSize');
set(StimWindow,'Position',figuresize);
set(0,'defaultaxesposition',[0 0 1 1])
Stimsubfigures{1} = subplot('Position',[0,0,1,1]); % First subplot figure which spans the entire screen
set(Stimsubfigures{1},'xLim',[0,100])
set(Stimsubfigures{1},'YLim',[0,100])
set(Stimsubfigures{1},'Visible','off')
% create subplots for stim system 3 plate setup
for aa = 2:4
Stimsubfigures{aa} = subplot(...
'Position',[.01+aa*.21,.2,.2,.2], ...
'color','none');
set(Stimsubfigures{aa},'xLim',[0,100])
set(Stimsubfigures{aa},'YLim',[0,100])
set(Stimsubfigures{aa},'Visible','off')
end
OrtDish = rectangle(...
'Parent',Stimsubfigures{1},...
'Position', [0,0,100,100],...
'facecolor',screencolor,...
'edgecolor',[.5,0,0],...
'curvature',[1,1],...
'LineWidth',3);
显示的错误表明无法将对象附加到已删除的句柄。当我接触计算机时,我会提供确切的错误信息。
这很奇怪,因为没有删除该句柄,它存储在一个单元矩阵中。
答案 0 :(得分:2)
问题来自重叠的subplot
:您绘制了一个完整比例的子图,然后在它上面添加了一些新的子图。
正如Matlab文档所说,
如果SUBPLOT规范导致新轴与现有轴重叠,则将删除现有轴-除非新轴和现有轴的位置相同。
如果您将subplot
替换为axes
,那就很好了。