Animate a scatter plot

34 views (last 30 days)
Gautam Sethi
Gautam Sethi on 10 Sep 2023
Commented: Gautam Sethi on 11 Sep 2023
What's the easiest way to create an animated scatter plot? I have a plot with over 20,000 points in my first scatter. These points shift their positions in a second scatter. I'd love to animate this shift. Is there a straightfoward way in Matlab to do this?

Accepted Answer

VINAYAK LUHA
VINAYAK LUHA on 10 Sep 2023
Edited: VINAYAK LUHA on 10 Sep 2023
Hi Gautam,
As per my understanding, you wish to animate the shift of scatter points between two scatter plots,
Here's a possible workaround,
xi = rand(1, 10);
xi = rand(1, 10);
yi = rand(1, 10);
xf = rand(1, 10);
yf = rand(1, 10);
figure;
ax = gca;
ax.NextPlot = 'replaceChildren';
axis([0 1 0 1]);
numFrames = 50;
for i = 1:numFrames
% Calculate intermediate data
t = i / numFrames;
xt = (1 - t) * xi + t * xf;
yt = (1 - t) * yi + t * yf;
% Plot scatter plot
scatter(xt, yt, [], [xt', yt', 1 - xt'], 'filled');
hold on;
for j = 1:numel(xt)
plot([xi(j), xt(j)], [yi(j), yt(j)], 'Color', [xt(j), yt(j), 1 - xt(j)], 'LineWidth', 1.5);
end
hold off;
frame = getframe(gcf);
im = frame2im(frame);
[imind, cm] = rgb2ind(im, 256);
% Write the indexed image to GIF file
if i == 1
imwrite(imind, cm, 'animation.gif', 'gif', 'Loopcount', inf, 'DelayTime', 0.1);
else
imwrite(imind, cm, 'animation.gif', 'gif', 'WriteMode', 'append', 'DelayTime', 0.1);
end
if i==numFrames
break
end
% Animation speed
pause(0.01);
cla
end
Hope this helps
  5 Comments
Gautam Sethi
Gautam Sethi on 11 Sep 2023
Wow, Vinayak, that's amazing! I can't thank you enough for writing ths code.
Gautam Sethi
Gautam Sethi on 11 Sep 2023
Thank you, Walter. I appreciate your assistance. I have a better understanding of writing animations now.

Sign in to comment.

More Answers (0)

Categories

Find more on Animation 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!