Animate a scatter plot

34 visualizzazioni (ultimi 30 giorni)
Gautam Sethi
Gautam Sethi il 10 Set 2023
Commentato: Gautam Sethi il 11 Set 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?

Risposta accettata

VINAYAK LUHA
VINAYAK LUHA il 10 Set 2023
Modificato: VINAYAK LUHA il 10 Set 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 Commenti
Gautam Sethi
Gautam Sethi il 11 Set 2023
Wow, Vinayak, that's amazing! I can't thank you enough for writing ths code.
Gautam Sethi
Gautam Sethi il 11 Set 2023
Thank you, Walter. I appreciate your assistance. I have a better understanding of writing animations now.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Animation in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by