How to constantly update a plot off of a slider being pulled
69 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Lawson Hoover
el 11 de Dic. de 2012
Comentada: JP Schnyder
el 7 de En. de 2020
Is it possible to automatically update a graph based off of the slider. I now how to update the graph once the position in the slider has changed, but what I want to know is it possible to have the graph up date as the slider is being pulled. Essentially, as the slider is being pulled, I want the graph to update for each position that the slider value cross, not just update once the slider is let go off and one set value is made. Does anyone have any ideas how to do this?
1 comentario
Srikanth Kothamasu
el 10 de Mzo. de 2016
I have two curves one is actual like (y=mx^2),other one is simulated curve which will be having similar behavior but not follow the actual one. so now i have to fallow the first curve with the help of slider is that possible. if so can you help out.
Respuesta aceptada
Teja Muppirala
el 11 de Dic. de 2012
Editada: John Kelly
el 19 de Nov. de 2013
I know what you are trying to do, I often want to do the same
Save the following in a file and run it to see an example:
function myslider
x = 1:10;
hplot = plot(x,0*x);
h = uicontrol('style','slider','units','pixel','position',[20 20 300 20]);
addlistener(h,'ActionEvent',@(hObject, event) makeplot(hObject, event,x,hplot));
function makeplot(hObject,event,x,hplot)
n = get(hObject,'Value');
set(hplot,'ydata',x.^n);
drawnow;
4 comentarios
Amanda K Hanson
el 9 de Abr. de 2019
if you use uislider, you can use a value changED function (which would do what you already have) or a value changING function (which it appears you want). more info at https://www.mathworks.com/help/matlab/ref/uislider.html
If youre set on using uicontrol's slider, I'm not sure how to update it constantly.
JP Schnyder
el 7 de En. de 2020
Since Matlab 2014a, 'ActionEvent' is renamed to 'ContinuousValueChange'in
addlistener(h,'ActionEvent',@(hObject, event) makeplot(hObject, event,x,hplot));
Más respuestas (1)
Matt Fig
el 11 de Dic. de 2012
Editada: Matt Fig
el 11 de Dic. de 2012
Yes.
function [] = slider_plot()
% Plot different plots according to slider location.
S.fh = figure('units','pixels',...
'position',[300 300 300 300],...
'menubar','none',...
'name','slider_plot',...
'numbertitle','off',...
'resize','off');
S.x = 0:.01:1; % For plotting.
S.ax = axes('unit','pix',...
'position',[20 80 260 210]);
S.LN = plot(S.x,S.x,'r');
S.sl = uicontrol('style','slide',...
'unit','pix',...
'position',[20 10 260 30],...
'min',1,'max',10,'val',1,...
'sliderstep',[1/20 1/20],...
'callback',{@sl_call,S});
function [] = sl_call(varargin)
% Callback for the slider.
[h,S] = varargin{[1,3]}; % calling handle and data structure.
set(S.LN,'ydata',S.x.^get(h,'value'))
3 comentarios
Matt Fig
el 11 de Dic. de 2012
Editada: Matt Fig
el 11 de Dic. de 2012
Oh I see. You mean if you click-and-hold on the slider knob itself and drag it instead of clicking in the trough. In that case, I don't think you can do it without accessing the underlying JAVA. The callback will not fire until a buttonrelease event.
Sorry, but I don't see any way to do it in pure MATLAB.
Ver también
Categorías
Más información sobre Interactive Control and Callbacks en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!