How do I do multi animated lines in one axes?

I need to do two multi animated lines in one axes.Is there any solution to this problem? As picture shows: This picture use "plot" ,but It's slowly when close to the end. And the matlab give a suggestion :use animatline to instead the plot function.

 Akzeptierte Antwort

Thorsten
Thorsten am 30 Aug. 2016
Bearbeitet: Thorsten am 30 Aug. 2016

0 Stimmen

Just create a second animatedline and use addpoints:
numpoints = 100000;
x = linspace(0,4*pi,numpoints);
y = sin(x);
y2 = cos(x);
figure
h = animatedline;
h2 = animatedline;
axis([0,4*pi,-1,1])
for k = 1:numpoints
addpoints(h,x(k),y(k))
addpoints(h2,x(k),y2(k))
drawnow update
end

4 Kommentare

ren ren
ren ren am 31 Aug. 2016
Oh,thanks!this problem solved successfully!
srinivas REDDY
srinivas REDDY am 16 Aug. 2020
how to save above graph in gif format?
saveas() or print()
Or getframe() and imwrite() the data part of it.
I want to add animatedlines programmatically rather than using h1, h2, h3... (number of lines depends on certain input arguments in code)
h(1:num_lines) = animatedline
creates an animatedline array. I'm trying to access these in a loop where data is updated by doing something like
for x = 1:10
for i = 1:num_lines
y = i*x;
addpoints(h(i),x,y)
end
end
Intuitively, I would expect this code to create straight lines with different slopes. However this does not seem to work this way: it creates a single line (instead of num_lines), concatenating values h(1:num_lines). Is it possible to use animatedline in a similar way; using indices to feed data?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Le Dung
Le Dung am 15 Dez. 2017
Bearbeitet: Le Dung am 15 Dez. 2017

0 Stimmen

I suggest to you another approach, i think it is familiar to anyone. You can use "hold on" after "figure" And, of course, at the moment, "update" in "drawnow is no need. I will use example that Thorsten is given. Of course, to reduce cost time, i use 1000 to replace for 100000.
numpoints = 1000;
x = linspace(0,4*pi,numpoints);
y = sin(x);
y2 = cos(x);
figure
hold on % To hold this figure.
h = animatedline;
h2 = animatedline;
axis([0,4*pi,-1,1])
for k = 1:numpoints
addpoints(h,x(k),y(k))
addpoints(h2,x(k),y2(k))
drawnow % "update" is no need for this case
end
vlad gnatenko
vlad gnatenko am 23 Dez. 2018

0 Stimmen

What if u need 2 lines in 2 Figures?

Kategorien

Gefragt:

am 30 Aug. 2016

Kommentiert:

am 17 Nov. 2020

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by