Animate a scatter plot
34 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Gautam Sethi
am 10 Sep. 2023
Kommentiert: Gautam Sethi
am 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?
0 Kommentare
Akzeptierte Antwort
VINAYAK LUHA
am 10 Sep. 2023
Bearbeitet: VINAYAK LUHA
am 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 Kommentare
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Animation finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!