欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2023-12-25 18:05:21
...

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

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

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

要想让每个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);
end

data1=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 on
bar(data2,'FaceColor',[.85 .85 .85],'BarWidth',0.8);
hold on
bar(data3,'FaceColor',[.47 .47 .47],'BarWidth',0.8);
hold on
bar(data4,'FaceColor',[.15 .15 .15],'BarWidth',0.8);
hold on
bar(data5,'FaceColor',[.53 .53 .53],'BarWidth',0.8);
hold on
bar(data6,'FaceColor',[ .31 .31 .31],'BarWidth',0.8);

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

相关标签: matlab 作图

上一篇:

下一篇: