matlab之bar图只有一组数据时,如何让每个bar都有不同的颜色?

来源:互联网 发布:js用for作1 100 编辑:程序博客网 时间:2024/04/28 02:32

bar图的数据只有一组时,画出来所有bar都是一个颜色的。通过修改‘facecolor’也是对所有bar的修改。
比如

data=[0.088888889   0.077777778 0.2 0.266666667 0.111111111 0.255555556];bar(data);

得到图:

要想让每个bar都有不同的颜色,该怎么修改呢?
在旧版本的matlab中,是可以利用bar图的children属性来修改:

b = bar(data);ch = get(b,'children');set(ch,'FaceVertexCData',[颜色矩阵]);

但是新版本中bar对象已经没有children属性,所以此方案已经不可行。

可以换个思路:
可以画6个图,利用hold on命令叠加在一起。分别设置每个图的颜色。
每个图都是只对应的那个bar有值,其他的为0。
比如生成六组数据:

dataT=zeros(6,6);for i=1:6    dataT(i,i)=data(i);enddata1=dataT(1,:);data2=dataT(2,:);data3=dataT(3,:);data4=dataT(4,:);data5=dataT(5,:);data6=dataT(6,:);

再对数据进行画图。

figure;set (gcf,'WindowStyle','normal','Position', [500,400,700,300],'color','w');bar(data1,'FaceColor',[.69 .69 .69],'BarWidth',0.8);hold onbar(data2,'FaceColor',[.85 .85 .85],'BarWidth',0.8);hold onbar(data3,'FaceColor',[.47 .47 .47],'BarWidth',0.8);hold onbar(data4,'FaceColor',[.15 .15 .15],'BarWidth',0.8);hold onbar(data5,'FaceColor',[.53 .53 .53],'BarWidth',0.8);hold onbar(data6,'FaceColor',[ .31 .31 .31],'BarWidth',0.8);

即可得到每个bar颜色都不一样的图。

原创粉丝点击