matlab生成动态并且存成GIF

matlab动态生成条形图并且存到GIF中;
先说如何把图片存成GIF,这里借用了matlab自带帮助文档里面的这一段
在这里插入图片描述
简单来讲就是GIF 文件不支持三维数据,所以应调用 rgb2ind,把RGB数据变成索引图象I。

然后说如何画动态条形图,这里采用的方法就是一帧只画一条,以前的画布保留,需要注意的就是这里设置条形图颜色会出现一些问题,主要表现就是用ch = get(b,‘children’);
set(ch{1},‘facecolor’,[0,0,1]);
这样的代码无法设置每一个分条的颜色,感兴趣的可以去探究一下到底是为什么,反正我这里打开CH是4个空cell。
然后,看了很多方法,最后用自带帮助文档里面的
在这里插入图片描述
这一段最终解决。
所以说帮助其实是个好东西,能仔细阅读帮助文档基本90%以上的CSDN都不用看了。
最后附上代码:

clc
clear
% [Y1 Y2 Y3 Y4]=readmatrix('presenceData.slx');
Y=zeros(20,4);
Y1=floor(mod(10000*rand(20,1),17)+1);
Y2=17-Y1;
Y3=floor(mod(10000*rand(20,1),30)+1);
Y4=30-Y1;

figure;
hold on;
set(gca,'xtick',0:1:20);
set(gca,'ytick',0:1:30);
for n=1:1:20
X(n)=n;
Y(n,:)=[Y1(n) Y2(n) Y3(n) Y4(n)];
b=bar(X(n),Y(n,:),'FaceColor','flat');%这里需要一种方法来给bar图形设置颜色
for k = 1:size(Y,2)
    b(k).CData = k;
end
ylabel('人数'),legend('A','B','C','D');
    A=getframe(gcf);
    I=frame2im(A);
    [I,map]=rgb2ind(I,256);

    if n == 1
    imwrite(I,map,'DongTu.gif','gif','Loopcount',inf,'DelayTime',0.2);
    else
    imwrite(I,map,'DongTu.gif','gif','WriteMode','append','DelayTime',0.2);
    end
end

hold off;

运行结果如下
在这里插入图片描述
这是生成的动图
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值