我想在Matlab条形图中为一组条形图设置自定义颜色。
就像这里展示的,但颜色不同我该怎么做呢?
我试图使用以下代码,但它显示的是堆叠的条形图,而不是组。
xdata = [1 2 3];
ydata = [10 20 30; 40 50 60; 5 6 7];
clr = [0 0.8 0;
0.3 0.8 0.8;
0 0 1];
for i = 1:length(xdata)
p = bar(xdata, ydata(i,:));
hold on
set(p,'FaceColor', clr(i,:));
end
如有任何帮助,我们将不胜感激谢谢。
最佳答案
您可以通过为条形图指定一个句柄,然后在之后更改FaceColor
属性来完成此操作控制柄实际上是一个控制柄数组,每个控制柄都包含构成条形图的每个面片对象的属性这样就可以很容易地更改您想要的任何属性:
clear
clc
close all
xdata = [1 2 3];
ydata = [10 20 30; 40 50 60; 5 6 7];
clr = [0 0.8 0;
0.3 0.8 0.8;
0 0 1];
hBar = bar(ydata);
for k = 1:numel(hBar)
set(hBar(k),'FaceColor',clr(:,k))
end
输出:
hBar是一个3x1结构,包含形成绘图的每个面片对象的属性:
手柄:
hBar =
175.0597 178.0494 180.0494
如果你输入
get(hBar)
你会得到:3x1 struct array with fields:
Annotation
DisplayName
HitTestArea
BeingDeleted
ButtonDownFcn
Children
...
And so on
...