在没有for循环的情况下更改条形图中的单个条形颜色

时间:2019-03-29 20:43:16

标签: matlab plot bar-chart matlab-figure

我想更改MATLAB中条形图中的单个条形颜色。我当然可以使用for循环来做到这一点,但是也可以不使用for循环来做到这一点,就像矢量操作一样。

这是使用for循环的最小示例

distr = [11,12,34,45,9];
totalkeys = numel(distr);
color = parula(totalkeys);
hold on;
for i = 1:totalkeys
bb= bar(i-1, distr(i), 'facecolor', color(i,:),'BarWidth', 1);
end
hold off;
xlim([0 totalkeys-1]);

顺便说一句,我正在使用MATLAB R2016a。

1 个答案:

答案 0 :(得分:3)

R2017b起 (感谢@SecretAgentMan注意,这是特定于版本的),bar对象具有CData属性,用于指定每个条形的颜色。但是,您还需要更改FaceColor属性以使其起作用:

  

FaceColor对象的Bar属性设置为'flat',以便图表使用CData属性中定义的颜色。

distr = [11,12,34,45,9];
color = parula(numel(distr));
bar(distr,'BarWidth', 1 ,'FaceColor', 'flat', 'CData',color);

enter image description here