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;
运行结果如下
这是生成的动图