如图所示,我在GUI中读取一个xlsx文件,点击“绘图”按钮,生成的figure在另外一个界面中出现,而不是在我的GUI的axes中显示,“绘图”按钮的回调程序如下所示,需要如何修改才行呢,求大神帮忙:)
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
axes(handles.axes1);
File_Path=get(handles.edit1,'string');
data=xlsread(File_Path);
x=1:length(data);
y=zeros(1,length(data));
for i=1:length(data)
y(i)=InsideSolarRadiation(data(i,1),data(i,2),data(i,3),data(i,4),data(i,5),data(i,6));
end
f=figure(1);
h = plot(0,0,'linewidth',1);
%xMin=-2*pi; %X轴初始最小值
%xMax=2*pi; %X轴初始最大值
xMin=0;
xMax=length(data)/2;
xlim([xMin,xMax]); %X轴初始范围
%ylim([-1.5 1.5]);
ylim([0 max(data(:,6))]);
%title('LP制作');
set(f,'Units','normalized');
xlabel('时间');
ylabel('温室内太阳辐射(W/m^2)');
% % % % % % % % % % % %
m=2;
xa = [x(m-1) x(m)];
ya = [y(m-1) y(m)];
[xaf,yaf] = axescoord2figurecoord(xa,ya); %axes坐标转为figure坐标
ar=annotation(f,'arrow',xaf,yaf,'Color',[1 0 0],'LineStyle','none','HeadStyle','vback1','HeadLength',12,'HeadWidth',10);
for m = 2:numel(x)
if(x(m)+1>xMax)
xdif=x(m)+1-xMax;
xlim([xMin+xdif,xMax+xdif]);
end
set(h,'xData',x(1:m),'yData',y(1:m));
xa = [x(m-1) x(m)];
ya = [y(m-1) y(m)];
[xaf,yaf] = axescoord2figurecoord(xa,ya);
annotation(f,'arrow',xaf,yaf,'Color',[1 0 0],'LineStyle','none');
set(ar,'X',xaf,'Y',yaf); %将箭头置于(xaf,yaf)的位置
drawnow;
pause(0.1);
end
捕获.PNG
(79.04 KB, 下载次数: 8)
2017-2-14 15:00 上传