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

这篇具有很好参考价值的文章主要介绍了【MATLAB】动态绘制曲线图(二维曲线)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

matlab绘制动态曲线,MATLAB,matlab
主程序:

加载数据的部分我省略了,就是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的。😄😄文章来源地址https://www.toymoban.com/news/detail-567688.html

到了这里,关于【MATLAB】动态绘制曲线图(二维曲线)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt绘制曲线图(基于qt画图QPainter)

    在没有QCharst模块时,可以使用QPainter自定义绘制曲线折线图 下面提供完整代码供参考: 直接在qt创建一个QMainWindow类的app的工程,不自动生成ui文件,然后把下面代码复制到mainwindow.cpp编译运行即可。 mainwindow.cpp: //博客:booinon //https://blog.csdn.net/boonion?spm=1011.2415.3001.5343

    2024年02月11日
    浏览(36)
  • 基于IMX6ULL的AP3216C的QT动态数据曲线图显示

    前言: 本文为手把手教学 Linux+QT 的典型基础项目 AP3216C 的数据折线图显示,项目使用正点原子的 IMX6ULL  阿尔法( Cortex-A7 系列)开发板。项目需要实现 AP3216C 在 Linux 系统下的驱动,使用 QT 设计 AP3216C 的数据显示页面作为项目的应用层。该项目属于非常简单的入门级项目,核心

    2024年02月16日
    浏览(38)
  • Matlab 曲线动态绘制

    示例: 如果需要更好的显示可以提前设置好xlim/ylim(注释掉的地方是Matlab GIF生成代码)

    2024年02月04日
    浏览(35)
  • QT图表-折线图、曲线图

    时间记录:2024/1/15 1.添加图表模块 .pro项目管理文件中添加charts模块 QChart类:图表类 QChartView类:图表显示类 2.ui文件中添加QChartView组件 (1)选择一个QGrapicsView组件将其拖拽到ui界面上合适位置 (2)右键新添加的QGrapicsView组件,将组件提升为QChartView组件 3.添加QChartView类的命

    2024年01月18日
    浏览(35)
  • YOLOv5|YOLOv7|YOLOv8改进之实验结果(四):将多种算法的Loss精度曲线图绘制到一张图上,便于YOLOv5、v7系列模型对比实验获取更多精度数据,丰富实验数据

    💡该教程为改进YOLO高阶指南,属于 《芒果书》 📚系列,包含大量的原创首发改进方式🚀 💡更多改进内容📚可以点击查看:YOLOv5改进、YOLOv7改进、YOLOv8改进、YOLOX改进原创目录 | 老师联袂推荐🏆 💡 🚀🚀🚀本博客内含·改进源代码·,按步骤操作运行改进后的代码即可

    2023年04月17日
    浏览(40)
  • 【KV260】利用XADC生成芯片温度曲线图

    如何在没有温度计的情况下,监控芯片的温度呢? Xilinx不仅提供了内置的XADC来观察温度,而且还可以生成如下的曲线图 具体操作如下 这时可以看到当前温度,最小温度,最大温度 上面是直接读取温度值。如果我们要长时间观察温度变化情况怎么办呢? 如下图 在黑色曲线区

    2024年02月15日
    浏览(32)
  • Qt+C++串口调试接收发送数据曲线图

    程序示例精选 Qt+C++串口调试接收发送数据曲线图 如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助! 这篇博客针对Qt+C++串口调试接收发送数据曲线图编写代码,代码整洁,规则,易读。 学习与应用推荐首选。 一、所需工具软件 二、使用步骤

    2024年02月11日
    浏览(31)
  • echarts折线图流动特效的实现(非平滑曲线)

    echarts官网:series-lines 注意:流动特效只支持非平滑曲线(smooth:false) series-lines路径图 : 用于带有起点和终点信息的线数据的绘制,主要用于地图上的航线,路线的可视化。 ECharts 2.x 里会用地图上的 markLine 去绘制迁徙效果,在 ECharts 3 里建议使用单独的 lines 类型图表。

    2024年02月14日
    浏览(33)
  • 98.qt qml-使用曲线图综合示例、支持多种鼠标交互、支持百万数据显示(已适配黑白风格)

    在上章我们只是简单实现了曲线图和折线图的显示: 79.qt qml-如何在QML中使用QCustomPlot之曲线/折线示例(已适配黑白风格)_qml 折线图_诺谦的博客-CSDN博客 所以本章实现综合示例、并添加多种功能如下所示: 详细显示:鼠标任意移动显示具体值内容 鼠标右击: 弹出菜单栏,支持

    2024年02月05日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包