How do I do multi animated lines in one axes?
64 次查看(过去 30 天)
显示 更早的评论
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.
0 个评论
采纳的回答
Thorsten
2016-8-30
编辑:Thorsten
2016-8-30
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 个评论
Koen
2020-11-17
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?
更多回答(2 个)
Le Dung
2017-12-15
编辑:Le Dung
2017-12-15
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
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!