我想更改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。
答案 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);