【MATLAB】动态绘制曲线图(二维曲线)

article/2025/8/15 11:04:30

先看效果✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨

在这里插入图片描述
主程序:

加载数据的部分我省略了,就是data1这个矩阵

close all;
X=1:25;
set(gcf,'unit','normalized','position',[0.3,0.25,0.5,0.5]); %figure窗口位置、大小设置
ylabel('人数')
xlabel('日期')
title('2022年11月重庆新冠疫情数据')
grid minor
xticks(1:3:25)
xticklabels(data1(1:3:end,1))
Dynamic_plot(X',data1(:,2),0.2,{'#9933FA','-.','p'})
text(13,500,'当日新增确诊','Color','#9933FA','FontSize',10)
Dynamic_plot(X',data1(:,3),0.2,{'r','-','o'})
text(15,3000,'当日新增无症状','Color','red','FontSize',10)
Dynamic_plot(X',data1(:,4),0.2,{'b',':','*'})
text(15,6000,'当日新增总数','Color','blue','FontSize',10)
% legend({'新增确诊','新增无症状','新增总数'},'Location','northwest')
text(1:3:25,data1(1:3:end,4)+300,num2str(data1(1:3:end,4)),'Color','red','FontSize',10)

动态绘图函数:
这里暂时只支持设置线性、颜色、markerstyle这三个参数吧,主要是用line()这个函数把点连起来,设置line的参数就是曲线的样式,查看帮助文档doc line可以自定义设置其他样式。

function F = Dynamic_plot(X,Y,dt,Style)
%% F = Dynamic_plot(X,Y,dt,Style) 动画曲线,可用于数据回放
% X 曲线横坐标,n维列向量,或与Y通维的矩阵
% Y 曲线纵坐标,可为n维列向量或n*k矩阵(k条曲线)
% dt 两相邻数据点之间的时间间隔,单位为秒
% dt影响数据回放的快慢,默认值为0.05s
% Style为曲线样式,这里不完美,有时间改一改(粗细什么的没有设置),{'r','-','o'}
% 返回值F为动画的框架frame文件,可用于生成gif图片hf = gcf;
hold on% 给出时间间隔的默认值
if nargin == 2  || isempty(dt)  % nargin: 输入参数的数目dt = 0.05;
endn = length(Y(:,1));
m = length(Y(1,:));
if isvector(X)        % 如果X是向量,则将其扩展为与Y同维的矩阵X = repmat( X,1,m );
endif nargin < 4               %默认参数,自己完善Style = repmat({'b','-','o'},m,1);  % 绘制初始点
%     disp(Style)
%     Style
end
for ii = 1:mh(ii) = plot(X(1,ii),Y(1,ii),Style{ii,3});     % 绘制初始点
endX_1 = X(1,:);
Y_1 = Y(1,:);
dX = 0.01*( max(X) - min(X) );Ymax = max( Y(:) );
Ymin = min( Y(:) );
Xmax = max( X(:) );
Xmin = min( X(:) );
dY = 0.05*( Ymax-Ymin );
dX = 0.05*( Xmax-Xmin );axis([Xmin-dX Xmax+dX Ymin-dY Ymax+dY]);  % 限制坐标轴F(1) = getframe(hf);for ii=2:nfor jj = 1:length(h)set( h(jj),'xdata',X(ii,jj),'ydata',Y(ii,jj) );  % 更新点endline([X_1; X(ii,:)],[Y_1;Y(ii,:)],'Color',Style{1,1},'LineStyle',Style{1,2},'Marker',Style{1,3});   % 曲线连线drawnowX_1 = X(ii,:);Y_1 = Y(ii,:);pause(dt);F(ii) = getframe(hf);
end

保存gif,这里我3次调用函数画了3个曲线,要是保存的话就是3个gif;你可以一次性画3条曲线(输入Y可以是矩阵),这样就会将多条曲线保存在一条gif中,不过这种情况他们是同时绘制的。

后面有空我改改。

GIF生成函数:

function  Fun_F2gif(F,filename,S)
%% Fun_F2gif(F,filename,S)  将frame格式图片框架文件转换为gif图片
% F为frame格式结构体
% S为设置参数,默认为gif动画两帧之间的间隔
% filename为文件名,默认为'Test'
% S为设置参数 S为单帧时间间隔% 默认参数
if nargin < 2filename = 'Test.gif';S = 0.1;
elseif nargin < 3S = 0.1;
elseif nargin == 3if isempty(filename)filename = 'Test.gif';end
endfor ii = 1:length(F)if iscell(F)f = F{ii};[I,map] = rgb2ind(f,256);elsef = F(ii); I = frame2im(f);[I,map] = rgb2ind(I,256);endif ii == 1imwrite(I,map,filename, 'Loopcount',inf,'DelayTime',S);      % 首帧elseimwrite(I,map,filename, 'WriteMode','append','DelayTime',S); % 后续帧 endend

要保保存为GIF时,可以参考这样写

...
F=Dynamic_plot(X,Y,...)
...
Fun_F2gif(F,'xxx.gif',0.02)

我暂时是录屏然后使用格式工厂转换成GIF的。😄😄


http://chatgpt.dhexx.cn/article/0bdnAWSB.shtml

相关文章

MATLAB----绘制三维曲线

参考于:中国大学慕课科学计算于MATLAB语言专题四“4.4三维曲线” 1.plot3函数 plot3(x,y,z,选项) plot3用来绘制三维曲线&#xff0c;与plot用法类似。当x&#xff0c;y&#xff0c;z为同型矩阵时&#xff0c;以x&#xff0c;y&#xff0c;z对应列绘制曲线&#xff0c;曲线条…

matlab画平滑曲线的两种方法

自然状态下&#xff0c;用plot画的是折线&#xff0c;而不是平滑曲线。 有两种方法可以画平滑曲线&#xff0c;第一种是拟合的方法&#xff0c;第二种是用spcrv&#xff0c;其实原理应该都一样就是插值。下面是源程序&#xff0c;大家可以根据需要自行选择&#xff0c;更改拟合…

matlab参数方程画曲线

求x2 - 3x 1 0 x -5:0.1:5; y1 x.x-3x1; y2zeros(size(x)); plot(x,y1,x,y2); f (x) xx-3x1 x1fzero(f,0.5) x2 fzero(f,2.5) x [0.2,1.8,2.5] y [1.3,2.8,1.1] z [0.4,1.2,1.6] plot3(x,y,z) grid on axis([0,3,1,3,0,2]) t linspace(0,10*pi,200) %生成有200个元素…

matlab,多条曲线画到一张图上

在matlab中&#xff0c;经常遇到画图问题&#xff0c;甚至&#xff0c;有时候需要把其他软件中的数据&#xff0c;导出来&#xff0c;用matlab处理。 此处给出&#xff0c;用matlab处理数据的一些简单方法。 1&#xff09;matlab加载excel文件 首先&#xff0c;数据在excel中&a…

利用matlab描点绘制平滑曲线

【本文所使用的matlab代码放在最后辽^_^】 figure 1是描点绘制的折线图&#xff0c;如图所示并不光滑。 通过进行曲线平滑&#xff0c;得到了比较美观光滑的figure 2&#xff0c;于是就可以在论文报告中插入使用啦&#xff01; 【matlab代码如下&#xff1a;】 x1[11.2,11.4,1…

Matlab画平滑曲线的两种方法( 拟合或插值后再用plot即可)

自然状态下&#xff0c;用plot画的是折线&#xff0c;而不是平滑曲线。 有两种方法可以画平滑曲线&#xff0c;第一种是拟合的方法&#xff0c;第二种是用spcrv&#xff0c;其实原理应该都一样就是插值。下面是源程序&#xff0c;大家可以根据需要自行选择&#xff0c;更改拟合…

matlab画简单曲线,并进行标注、图例、加网格,等操作

原文地址为&#xff1a; 用matlab画简单曲线&#xff0c;并进行标注、图例、加网格&#xff0c;等操作 用matlab画简单曲线&#xff0c;并进行标注、图例、加网格&#xff0c;等操作 工具/原料 matlab 软件 方法/步骤 本人采用的是r2012版本&#xff0c;现简单的画两条曲线&a…

Matlab 绘制多条曲线,方法!

Matlab 提供了一下几种线型 Matlab提供了几种Marker&#xff1f;10几种 每次画曲线都要想要用那种线型&#xff0c;很麻烦&#xff0c;可以写个函数&#xff0c;把所有的线型&#xff0c;marker什么的信息都输出。 function [linestyles,MarkerEdgeColors,Markers] generate_li…

Matlab将散点绘制为平滑曲线的简单方法

1. 平滑曲线 自然状态下&#xff0c;用plot画的是折线&#xff0c;而不是平滑曲线。 有两种方法可以画平滑曲线&#xff0c;第一种是拟合的方法&#xff0c;第二种是用spcrv&#xff0c;其实原理应该都一样就是插值。下面是源程序&#xff0c;大家可以根据需要自行选择&#…

Matlab曲线绘制详解

Matlab画图详解 连续曲线-plot plot()函数是一个非常常见的画图函数&#xff0c;一般用来画连续的曲线。具体用法如下&#xff1a;   plot&#xff08;y&#xff09;&#xff1a;y为纵坐标的值&#xff08;一个1*n矩阵&#xff09;&#xff0c;y的index作为横坐标。   pl…

Matlab在一张图上画多条曲线或分别画

1.在plot曲线时&#xff0c;有时想在一张图上重合画多条曲线&#xff0c;我们只需要在画图命令之前加上hold on就好&#xff0c;比如&#xff1a; t 1:0.1:10&#xff1b; y1 sin(2*pi*t); y1 cos(2*pi*t);plot(y1); hold on; plot(y2);运行结果如下&#xff1a; 那么y1和y…

Matlab——绘制基础曲线

1、代码如下&#xff1a; close all;clear all;clc; %关闭所有图形窗口&#xff0c;清除工作空间所有变量&#xff0c;清空命令行 x0:0.02:10; y1sin(x); y22*sin(x); plot(x,y1,b*:,x,y2,r-); %设置颜色、标记和线型 axis([0 pi 0 2]); %设置坐标轴 title(正弦曲…

matlab绘图学习(二维曲线)

目录 函数 一、plot函数的基本用法: 二、 plot函数的调用格式 &#xff08;1&#xff09;最简单的调用plot(x&#xff09; &#xff08;2&#xff09;当plot函数的参数x是复数向量时&#xff0c;则分别以该向量元素的实部和虚部为横、纵坐标绘制出一条曲线 &#xff08;3&…

C++中的string用法

&#xff08;本人只是小新&#xff0c;写博客就是想记录学习&#xff0c;同时让一些大佬看到我的学习记录可以指出我的错误&#xff09; 目录 &#xff08;1&#xff09;对于string的个人理解 &#xff08;2&#xff09;字符串的输入 &#xff08;3&#xff09;字符串的基本操…

c++ String 用法详解 (全面解析)

一。string的初始化 首先要定义它的头文件 #include<string>string类是一个模板类&#xff0c;位于名字空间std中&#xff0c;通常为方便使用还需要增加&#xff1a; using namespace std;然后我们先将声明一个string类型变量的操作 string a;a "hello";//…

string的使用介绍

目录 标准库中的string类 string类(了解) 编码介绍 string类的常用接口说明 Member functions 测试一&#xff1a;创建对象 测试二&#xff1a;遍历字符串 Iterators 测试三&#xff1a;反向迭代器(Iterators) Capacity 测试四&#xff1a;容器相关(Capacity) 测试…

STL之string用法详解

2.1 string容器介绍 string也属于STL常用容器之一&#xff0c;因此vector&#xff08;参考博客&#xff09;中的大部分方法与迭代器都适用于string容器。string容器用于保存字符串&#xff0c;使用一组连续的内存单元来存放字符串中的每个字符&#xff0c;因此也支持随机访问与…

String用法详解

string类 声明 string类本不是STL的容器&#xff0c;但是它与STL容器有着很多相似的操作&#xff0c;因此&#xff0c;把string放在这里一起进行介绍。 之所以抛弃char*的字符串而选用C标准程序库中的string类&#xff0c;是因为他和前者比较起来&#xff0c;不必担心内存是否…

string 的常见用法详解

目录 1.string 的定义 2.string 中内容的访问 3.string 常用函数实例解析 在C语言中&#xff0c;一般使用字符数组 char str[]来存放字符串&#xff0c;但是使用字符串数组有时会显得操作麻烦&#xff0c;在C中加入了string类型。 注意&#xff0c;如果要使用string&#xf…

【C++】STL常用容器总结之十二:string类

13、string类 声明 string类本不是STL的容器&#xff0c;但是它与STL容器有着很多相似的操作&#xff0c;因此&#xff0c;把string放在这里一起进行介绍。 之所以抛弃char*的字符串而选用C标准程序库中的string类&#xff0c;是因为他和前者比较起来&#xff0c;不必担心内…