我想在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。
从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);