Matlab 使用颜色条按给定值向条形图添加颜色

Matlab 使用颜色条按给定值向条形图添加颜色,matlab,colormap,Matlab,Colormap,考虑以下条形图 figure bar([2 4 8; 1 2 3; 3 3 3],'stacked') 我希望每个条都有一个颜色对应于一个颜色映射(这里,介于[0,1]之间),这样每个条都有一个与以下数据匹配的颜色 data = [0.1 0.8 0.1; 0.5 0.5 0.2; 0.6 0.3 0.9]; 您可以使用“CData”参数单独设置面颜色。您只需记住将“FaceColor”也设置为“flat” b = bar([2 4 8; 1 2 3; 3 3 3], 'stacked')

考虑以下
条形图

figure
bar([2 4 8; 1 2 3; 3 3 3],'stacked')

我希望每个条都有一个颜色对应于一个颜色映射(这里,介于
[0,1]
之间),这样每个条都有一个与以下数据匹配的颜色

data = [0.1 0.8 0.1; 0.5 0.5 0.2; 0.6 0.3 0.9];

您可以使用“CData”参数单独设置面颜色。您只需记住将“FaceColor”也设置为“flat”

b = bar([2 4 8; 1 2 3; 3 3 3], 'stacked');
data = [0.1 0.8 0.1; 0.5 0.5 0.2; 0.6 0.3 0.9];

for i = 1:length(b)
    b(i).CData = repmat(data(i, :)', [1, 3]); % use your data as grayscale color level
    b(i).FaceColor = 'flat';
end
编辑:
如果我弄错了颜色映射中颜色的顺序,您应该将Cdata调用更改为
b(I)。Cdata=repmat(数据(:,I),[1,3])取而代之。不知道你想要哪一个。

我想你是说彩色地图而不是彩色条?它应该如何定义,如它应该包含多少离散的颜色级别?@Matteo颜色映射/颜色条在[0,1]之间定义,即如果它是灰度,其中0为黑色,1为白色,对于条形图中的第一列,蓝色和黄色将变为深灰色(0.1),橙色(中间)将变为浅灰色(0.8)您的代码不工作..在R2018b和R2019a上对我来说都非常好。