话不多说,直接上代码,使用时直接更改数据即可
% 定义数据
x = 1:20000;
y = 2*x;
y1 =3*x;
% 降采样
downsample_factor = 50; %自定义,减小绘图和保存时间
x_downsampled = x(1:downsample_factor:end);
y_downsampled = y(1:downsample_factor:end);
y1_downsampled = y1(1:downsample_factor:end);
% 初始化图形窗口
figure;
hold on;
xlabel('Time[s]');
ylabel('J');
box on;
set(gcf, 'Color', 'w'); % 设置图形背景为白色
% 初始化 animatedline 对象
h = animatedline('Color', [0, 0.4470, 0.7410], 'LineWidth', 0.2, 'Marker', 'o');
h1 = animatedline('Color', [0.8500, 0.3250, 0.0980], 'LineWidth', 0.2, 'Marker', 's');
% 固定坐标轴范围
axis([min(x_downsampled), max(x_downsampled), min([y_downsampled, y1_downsampled]), max([y_downsampled, y1_downsampled])]);
% 初始化 GIF 文件名
filename = 'dynamic_plot.gif';
% 逐步添加数据点并保存为 GIF
for i = 1:length(x_downsampled)
% 添加数据点
addpoints(h, x_downsampled(i), y_downsampled(i)); % 添加 y 的数据点
addpoints(h1, x_downsampled(i), y1_downsampled(i)); % 添加 y1 的数据点
drawnow limitrate; % 限制刷新频率
% 捕获当前帧
frame = getframe(gcf);
im = frame2im(frame);
[imind, cm] = rgb2ind(im, 256); % 将 RGB 图像转换为索引图像
% 写入 GIF 文件
if i == 1
% 第一帧,创建 GIF 文件
imwrite(imind, cm, filename, 'gif', 'Loopcount', inf, 'DelayTime', 0.1);
else
% 后续帧,追加到 GIF 文件
imwrite(imind, cm, filename, 'gif', 'WriteMode', 'append', 'DelayTime', 0.1);
end
end
hold off;
disp(['GIF 文件已保存为: ', filename]);