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

2023-05-16

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

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

加载数据的部分我省略了,就是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;
end

n = length(Y(:,1));
m = length(Y(1,:));
if isvector(X)        % 如果X是向量,则将其扩展为与Y同维的矩阵
    X = repmat( X,1,m );
end

if nargin < 4               %默认参数,自己完善
    Style = repmat({'b','-','o'},m,1);  % 绘制初始点
%     disp(Style)
%     Style
end
for ii = 1:m
    h(ii) = plot(X(1,ii),Y(1,ii),Style{ii,3});     % 绘制初始点
end


X_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:n

   for jj = 1:length(h)
      set( h(jj),'xdata',X(ii,jj),'ydata',Y(ii,jj) );  % 更新点
   end
   line([X_1; X(ii,:)],[Y_1;Y(ii,:)],'Color',Style{1,1},'LineStyle',Style{1,2},'Marker',Style{1,3});   % 曲线连线
   drawnow
   X_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 < 2
    filename = 'Test.gif';
    S = 0.1;
elseif nargin < 3
    S = 0.1;
elseif nargin == 3
    if isempty(filename)
        filename = 'Test.gif';
    end
end

for ii = 1:length(F)
    if iscell(F)
       f = F{ii};
       [I,map] = rgb2ind(f,256);
    else
       f = F(ii); 
       I = frame2im(f);
       [I,map] = rgb2ind(I,256);
    end

    if ii == 1
        imwrite(I,map,filename, 'Loopcount',inf,'DelayTime',S);      % 首帧
    else
        imwrite(I,map,filename, 'WriteMode','append','DelayTime',S); % 后续帧 
    end
    
end

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【MATLAB】动态绘制曲线图(二维曲线) 的相关文章

  • ABB机器人复习

    1 工业机器人最显著的特点 xff1a 2 工业气人的5种典型的结构 xff1a 3 认识示教器 xff1a 4 ABB机器人坐标系 xff1a 5 轴运动与线性运动 xff1a 1 轴运动 xff1a 2 线性运动 xff1a 6 重定位
  • step7basic的许可无法彻底完成

    安装博途并 后 xff0c 在项目中选择设备时可能会出现 xff1a step7basic的许可无法彻底完成 因为automation license manager中 的报错 原因 xff1a win10系统的更新 xff0c 导致软件不
  • 西门子学习第一章 S7-1200基础

    第一章 1 1 S7 1200系统概述 xff08 1 xff09 PLC 运用领域 xff08 2 xff09 S7 1200外观 xff08 3 xff09 西门子系列分类 1 2博途软件1 3 S7 1200系列PLC的硬件介绍 xf
  • 可见光的波长转换为RGB值颜色,光谱波长与RGBA分量,不同波长的光转换成不同的RGB值,JavaScript版本

    JS版本的光谱波长转换RGBA颜色值的方法 xff0c 在网上没找到 xff0c 后来领导发来一个C 43 43 版本的 xff0c 我对照着改为JS版 xff0c 有需要的朋友 可以参考 xff0c 代码如下 xff1a lt html
  • Modbus TCP Server端(附超全注释)

    实验项目名称 Modbus TCP实验 一 实验目的二 实验内容三 实验环境四 设计方案五 实验结果及分析 xff08 或设计总结 xff09 六 完整代码6 1 server c6 2 respond c6 3 respond h 开发语
  • ORB特征提取和匹配

    一 步骤二 代码三 部分结果展示3 1 使用Sobel算子且方向为vertical xff0c 进行边缘检测3 2 特征点提取 xff08 部分 xff09 3 3 特征点匹配 一 步骤 Step1 xff1a 读取彩色图片 1 新建实验用
  • windows下 Gitee(码云)使用

    1 注册Gitee并新建远程仓库2 初始化本地工作空间3 Git 全局设置 4 SSH公钥绑定5 提交文件到远程仓库 本文前提 xff1a 你已经在windows安装了git xff0c 如图所示 xff0c 关于git的安装 xff0c
  • 在 VS Code 中使用 Git

    1 VS Code安装2 在VS Code中登录Github账号3 Git 安装4 Git配置5 新建远程仓库并用命令行提交6 使用VSCode提交 1 VS Code安装 到vs code官网下载合适的版本并安装 2 在VS Code中登
  • 图像处理与机器视觉复习

    完整资源 xff1a GIthub链接 一 填空题 图像灰度均值 方差 图像的灰度平均值是平指灰度的平均水平 平均方差是衡量一个样本波动大小的量 xff0c 对图像来说 xff0c 平均方差反应的是图像高频部分的大小 方差小 xff0c 则
  • You-get && FFmpeg

    一 引言二 you get 介绍2 1 you get 安装2 2 you get语法及参数2 3 you get运用实例 三 FFmpeg介绍3 1 FFmpeg安装3 2 you get与FFmpeg的结合使用 四 HEVC 扩展 一
  • 一文读懂 主成分分析 与 因子分析

    2023 2 20更新 xff1a 修改了一些文字错误 xff0c 优化了排版 xff0c 增加了一些拓展内容 xff0c 祝大家学业有成 xff01 xff08 期待三连 x1f601 x1f601 xff09 目录 一 主成分分析二 因
  • Ubuntu 18.04 升级 20.04

    1 更换源2 安装所有更新包3 移除Ubuntu18 04上未用的旧包4 升级 鸿蒙开发要使用Ubuntu 20 04 及以上编译源码 xff0c 故将原来学习ROS 的Ubuntu18 04升级为20 04 1 更换源 好久没用这系统了
  • Ubuntu 20.04 update 报错 Problem executing scripts APT::Update

    报错内容 xff1a appstreamcli error span class token keyword while span loading shared libraries libxapian so 22 cannot span c
  • 解决Ubuntu20.04 开机黑屏光标闪烁进不去系统

    问题描述 xff1a 我是双系统 xff0c 原Ubuntu系统是18 04的 xff0c 使用命令行升级到20 04 xff0c 我搞到晚上2 xff1a 00 xff0c tnnd学校插座断电了 xff0c 大部分是升级好了 xff0c
  • 百度发布深度学习可视化平台 Visual DL

    恩威AI 科技评论消息 xff0c 1 月 16 日 xff0c 百度 ECharts 团队发布旗下知名开源产品 ECharts 的最新 4 0 版本 xff0c 并宣布品牌升级为 百度数据可视化实验室 xff08 http vis bai
  • VS Code SSH远程连接Ubuntu

    1 ubuntu设置 安装SSH服务并获取远程访问的IP地址 在Ubuntu系统中 xff0c Ctrl 43 Alt 43 T 打开终端工具 xff0c 执行如下命令安装SSH服务 说明 xff1a 如果执行该命令失败 xff0c 提示o
  • Ubuntu 20.04 根目录磁盘扩容(很快 很简单)

    1 下载安装GParted span class token function sudo span span class token function apt get span span class token function insta
  • Ubuntu创建pycharm快捷启动方式

    普通启动方式 xff1a 下载pycharm压缩包解压进入pycharm的bin目录下终端运行 sh pycharm sh 创建快捷启动方式 xff1a 终端输入 span class token function sudo span ge
  • Neptune w800初学 Ubuntu下程序编译与烧写

    一 hb学习1 1一些基本概念1 2构建流程1 3目录说明1 4使用说明 二 Neptune w800开发版实操2 1 准备工作2 1 1 示例工程下载2 1 2 编译1 编译工具链配置2 WiFIOT环境配置3 安装编译工具hb4 编译
  • Python安装 scons、pycryptodome等各种库很慢、安装失败

    本文方法适用于 绝大部分 python扩展库的安装 xff0c win Linux逗适用 原来 xff1a pip3 span class token function install span scons 报错 修改 xff1a pip3

随机推荐