我想更改堆积条形图的颜色,但我不断收到错误消息
由于我需要在堆积的条形图中使用特定的颜色来与另一个图形匹配,因此我设置了具有RGB值的颜色向量:colori
,然后在创建了要创建的图形后将其转换为0到1之间的值。像这样更改15个堆积条的颜色:
for i = 1:15
barSNE(i,:).FaceColor = colori(i);
end
这里有一些代码:
...
colori = [139,0,0
255,160,122;
255,69,0;
255,165,0;
255,215,0;
154,205,50;
34,139,34;
50,205,50;
255,182,193;
106,90,205;
139,0,139;
32,178,170;
199,21,133;
30,144,255;
0,0,205];
colori = colori ./ 255;
ctMeansT = ctMeans.';
figure(2)
barSNE = bar(ctMeansT, 'stacked');
for i = 1:15
barSNE(i,:).FaceColor = colori(i);
end
但是,我收到以下错误消息:
Structure assignment to non-structure object. Error in viSNE_stacked_bar_plot (line 41) barSNE(i,:).FaceColor = colori(i);
雕像的颜色没有按预期更改
答案 0 :(得分:0)
您对数组barSNE
和colori
的索引编制错误。如果我按照上面发布的代码运行代码,并检查得到的两个数组的大小
>> size(barSNE)
ans =
1 15
>> size(colori)
ans =
15 3
因此barSNE
是一维数组,而colori
是大小为15 x 3的矩阵。但是,给定索引符号,则在代码中反之亦然。例如。如果执行colori(i)
,则不会获得所需的第一个RGB三元组,而是数组colori
的第一个单个值(在您的情况下为139/256 = 0.5451)。
按如下所示更改循环内的索引
for i = 1:15
barSNE(i).FaceColor = colori(i,:);
end
,并且有效。作为一个带有ctMeans
的随机数的示例(因为您没有提供原始数据),我得到了这样的条形图