How do I do multi animated lines in one axes?
46 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
ren ren
el 30 de Ag. de 2016
Comentada: Koen
el 17 de Nov. de 2020
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.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/156069/image.jpeg)
0 comentarios
Respuesta aceptada
Thorsten
el 30 de Ag. de 2016
Editada: Thorsten
el 30 de Ag. de 2016
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 comentarios
Walter Roberson
el 16 de Ag. de 2020
saveas() or print()
Or getframe() and imwrite() the data part of it.
Koen
el 17 de Nov. de 2020
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?
Más respuestas (2)
Le Dung
el 15 de Dic. de 2017
Editada: Le Dung
el 15 de Dic. de 2017
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
1 comentario
Ver también
Categorías
Más información sobre Animation 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!