MATLAB : update plot with a pushbutton
3 views (last 30 days)
Show older comments
Hello,
I have a figure with a graph and 2 different plot on this graph. I add an edit text with a push button in my figure near my graph.
Button_app=uicontrol('Parent',fig,'Style','pushbutton','String','Ok','Units','normalized','Position',[0.82 0.4 0.1 0.03]);
edit=uicontrol('Parent',fig,'Style','edit','String','','Units','normalized','Position',[0.82 0.45 0.1 0.03]);
And I would like the user write a number in the edit text and update one of my plot (by adding this number in each value of this plot). But I don't know how to do it ? I have a function callback when I push the button but I don't know how to get the value when the user write in the edit text.
set(Button_app,'Callback',@Callback)
Thank you in advance,
Best regards
0 Comments
Accepted Answer
Adam
on 20 Mar 2015
If you simply want to know how to get a value from an editbox then:
newVal = str2double( edit.String );
(Don't call your varaible 'edit' though - this is a builtin function and even if it is not a function you intend to use just don't get into the habit of overwriting function-names with variables).
As far as updating your graph goes, the user just enters a single number? So is this just expected to be appended as a y value and an x value created just as the next increment of x?
One way to do this fairly neatly is to keep the handle of your original plot e.g.
hLine = plot(...);
Then edit the 'XData' and 'YData' properties with the new data e.g.
xData = get( hLine, 'XData' );
yData = get( hLine, 'YData' );
set( hLine, 'YData', [yData newVal], 'XData', [xData xData(end) + 1] );
Unless you have a large amount of data you could probably just delete the graph and replot the whole thing too, but I prefer to just edit the existing line object in such cases.
2 Comments
Adam
on 20 Mar 2015
Edited: Adam
on 20 Mar 2015
Just pass 'edit_offset' to your callback instead.
The arguments to a callback are evaluated at the point the callback is set. That means the code
edit_offset.String
will be evaluated when you set the button callback. I'm guessing that at that point your edit box is empty. Either way, it will never update when your edit box changes content. If you pass just the editbox handle then you can extract the string from it within the callback. The editbox handle will remain constant as it should, but the string will be whatever is currently in the editbox when the callback is executed if you do it that way.
More Answers (1)
See Also
Categories
Find more on Specifying Target for Graphics Output in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!