Animate line but show marker only on current point

19 ビュー (過去 30 日間)
Ben
Ben 2015 年 9 月 16 日
コメント済み: Brendan Hamm 2015 年 9 月 17 日
I have data that overlaps itself a lot, so we're animating it for visualization purposes:
h = animatedline('Color', 'b');
DELAY = 0.001;
for i = 1:size(mapped_pts, 1)
addpoints(h, mapped_pts(i, 1), mapped_pts(i, 2));
drawnow
% pause(DELAY)
end
This works, but after a bit the "head" of the line gets harder to pick out, since it's small. I tried adding 'Marker', 'o' to the animatedline parameters, but that leaves a marker at every data point. I'd like to have a marker only on the most recently plotted point. Is this possible?

採用された回答

Steven Lord
Steven Lord 2015 年 9 月 16 日
The COMET function does what you're looking for with respect to the marker, but it requires all the data to be specified when COMET is called. If that's okay for your application, that's what I'd use.

その他の回答 (1 件)

Brendan Hamm
Brendan Hamm 2015 年 9 月 16 日
There is a function comet which does exactly this. It does not however allow you to control the pausing. Your other option is to create and delete a marker at every step:
f = figure;
ax = axes;
hold on
h = animatedline('Color', 'b');
DELAY = 0.001;
p = plot(ax,mapped_pts(1, 1),mapped_pts(1, 2),'o');
for i = 1:size(mapped_pts, 1)
p.XData = mapped_pts(i, 1);
p.YData = mapped_pts(i, 2);
addpoints(h, mapped_pts(i, 1), mapped_pts(i, 2));
drawnow
pause(DELAY)
end
  2 件のコメント
Ben
Ben 2015 年 9 月 16 日
I can't change my "accepted answer", I guess, but I ended up going with this one so I don't have to muck around with changing a built-in function to control the speed. Thanks!
Brendan Hamm
Brendan Hamm 2015 年 9 月 17 日
No Problem. I have used this method in the past to allow for more control.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeAnimation についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by