Update multiple YData on plot without losing focus
1 view (last 30 days)
Show older comments
Hi guys, I'm trying to write some code to periodically update a plot with multiple 'Ydata' sets without losing focus on the current window i'm working on (i.e. Word, Chrome etc...).
At the moment I perform the calculations on the data then update the plot with a for loop in the following manner:
for...
figure(h);
plot(t_whole,'-k');
hold on
plot(fit.mode,'-b');
plot(fit.mean,'-r');
axis tight
drawnow
hold off
end
This works to update the plot but then steals the focus back to the figure each time the plot is updated (approx every 6-12s depending on the data set)
Ideally I would want to use
set(h,'YData',...);
which wouldn't steal focus, but i'm not sure how to do that for the 3 data sets I have (t_whole,fit.mode,fit.mean). Any suggestions?
Thanks, Allen
0 Comments
Accepted Answer
Ced
on 22 Oct 2014
where do you get your data from? In general, what I would do is the following, if you want to plot your three sets of data into a single plot:
1. plot the first set of data and save the handles, e.g.
figure(h)
hold on
handle1 = plot(t_whole,'-k');
handle2 = plot(fit.mode,'-b');
handle3 = plot(fit.mean,'-r');
2. Then, you can change your sets (probably through your for loop) and update them individually using the handles, meaning something like
for ...
set(handle1,'YData',t_whole_new)
set(handle2,'YData',fit.mode)
set(handle3,'YData',fit.mean)
drawnow
end
Hope this helps
More Answers (1)
Robert Cumming
on 22 Oct 2014
you need to save the handles for each of your 3 plots
h1 = plot ( t_whole, '-k');
h2 = plot ( fit.mode,'-b');
h3 = plot ( fit.mean,'-r');
then when you update you do
set(h1.YData,....)
set(h2.YData,....)
set(h3.YData,....)
See Also
Categories
Find more on Graphics Performance 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!