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

问题描述 投票:2回答:1

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

matlab plot bar-chart matlab-figure
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.