You are now following this question
- You will see updates in your followed content feed.
- You may receive emails, depending on your communication preferences.
plot figure in gui guide, to axes
1 view (last 30 days)
Show older comments
Hi
i want to plot a figure to axes in gui guide, but only the legend is showing and the xlim and ylim is not auto, i goes from 0 to 1 ( but should be auto)
19 Comments
polo Mahmoud
on 26 Feb 2020
for i=1:length(av(:,1))
% figure
axes(handles.axes13);
plot(t,av(i,:),'k','LineWidth',1.8)
hold on
% figure
plot(t,Acc(VSENS(i),:),'r','LineWidth',0.8)
hold on
% plot(t,zeros(1,length(av(:,1))),'k')
% hold on
% figure
plot(t,ErrorM,'color',[0,0,0]+0.5)
if NX==1
legend('Estimated','Newmark','Error')
elseif NX==2
legend('Estimated','Measured','Error')
end
grid on
set(gca, 'FontName', 'Times New Roman')
set(gca,'FontSize',18)
set(gcf,'color','w');
ylabel('Acceleration [m/s^2]')
xlabel('Time [s]')
title(['ME FreeDOF ',sprintf('%d',MVSENS(i))])
end
Rik
on 26 Feb 2020
Did you check with the debugger if one of the legend calls actually runs?
It is also better practice to use explicit parent handles whenever working with a GUI.
%so this:
axes(handles.axes13);
plot(t,av(i,:),'k','LineWidth',1.8)
hold on
plot(t,Acc(VSENS(i),:),'r','LineWidth',0.8)
plot(t,ErrorM,'color',[0,0,0]+0.5)
legend('Estimated','Newmark','Error')
%becomes this:
h_plots=plot(t,av(i,:),'k','LineWidth',1.8,...
'Parent',handles.axes13)
hold(handles.axes13,'on')
h_plots(2)=plot(t,Acc(VSENS(i),:),'r','LineWidth',0.8,...
'Parent',handles.axes13)
h_plots(3)=plot(t,ErrorM,'color',[0,0,0]+0.5,...
'Parent',handles.axes13)
legend(h_plots,'Estimated','Newmark','Error')
%or even better:
h_plots=plot(t,av(i,:),'k','LineWidth',1.8,...
'DisplayName','Estimated',...
'Parent',handles.axes13)
hold(handles.axes13,'on')
h_plots(2)=plot(t,Acc(VSENS(i),:),'r','LineWidth',0.8,...
'DisplayName','Newmark',...
'Parent',handles.axes13)
h_plots(3)=plot(t,ErrorM,'color',[0,0,0]+0.5,...
'DisplayName','Error',...
'Parent',handles.axes13)
legend(h_plots)
polo Mahmoud
on 26 Feb 2020
what i get is this:
polo Mahmoud
on 26 Feb 2020
hi rik
is says :
Unable to perform assignment because the left and right sides have a different number of elements.
Error in New_gui_polo_26_02>pushbutton28_Callback (line 2063)
h_plots(2)=plot(t,Acc(VSENS(i),:),'r','LineWidth',0.8,...
Error in gui_mainfcn (line 95)
feval(varargin{:});
Error in New_gui_polo_26_02 (line 42)
gui_mainfcn(gui_State, varargin{:});
Error in
matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)New_gui_polo_26_02('pushbutton28_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating UIControl Callback.
Rik
on 26 Feb 2020
Edited: Rik
on 26 Feb 2020
None of the code you show is actually changing the axes limits, so you must have done that somewhere else. And did you check what shape data is being plotted? If it is scalar it will not show up.
That is probably also the cause of the error. If no graphics object is created you will get this error. See the MWE below.
figure(1),clf(1)
h=plot(rand(2,1),rand(2,1));
h(2)=plot([],[]);
polo Mahmoud
on 26 Feb 2020
it is vectors that i plot.
and i have checked that both the xlim and ylim is set to auto in gui, but i dont understand
polo Mahmoud
on 26 Feb 2020
i tryied the example code :
figure(1),clf(1)
h=plot(rand(2,1),rand(2,1));
h(2)=plot([],[]);
is says : but i plotted a line
Unable to perform assignment because the left and right sides have a different number of elements.
Rik
on 26 Feb 2020
Exactly. This is the same way in which your code fails as well. And you can even see that in your legend: only black lines, meaning that no other graphics objects are generated, so there is no valid data in your second and third plot call.
polo Mahmoud
on 26 Feb 2020
Edited: Rik
on 26 Feb 2020
when i evaluated my gui code from matlab, it gives data for all. but when i run it through gui i gives this error
for the first part when i run my gui is says this
Line
Line
Line
Line
[edit Rik: removed the dozens of repetitions that followed]
polo Mahmoud
on 26 Feb 2020
But I use the function " Evaluate" for the gui .m file it works good
But when i run the gui and uses the "button" to evaluate it gives that error
polo Mahmoud
on 27 Feb 2020
Hi Rik
do you know why the command window says:
Line
Line
ect...
Rik
on 27 Feb 2020
I forgot to add in the semicolon, because I wrote the code in this editor, so I didn't have mlint to warn me.
h=plot(rand(4,1)) %no ; so returns an output and will display "Line"
If one call to plot generates multiple objects, it will form a vector, so you will get the result you wrote.
polo Mahmoud
on 27 Feb 2020
this is what i get
polo Mahmoud
on 27 Feb 2020
when i evaluate i get this
Rik
on 27 Feb 2020
As I have said before: you need to make sure the input is the same for the two situations. What is the exact input to your function when you run it indepently, and what is the input when you call it from your GUI? Try to make a MWE so we can run your code without any other dependencies and can reproduce your issue. You can attach files with the paperclip icon if needed.
polo Mahmoud
on 28 Feb 2020
Hi Rik Thank for your help, i Saw that i had made a stupid error.
Answers (0)
See Also
Categories
Find more on Migrate GUIDE Apps in Help Center and File Exchange
Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!An Error Occurred
Unable to complete the action because of changes made to the page. Reload the page to see its updated state.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom(English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)