Matlab 中条形组的自定义颜色

Custom colors for group of bars in Matlab

我想为 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
    ...