如何更改条形图中条形的颜色?

时间:2013-11-26 17:14:16

标签: matlab plot graph colors histogram

我想创建一个条形图,我可以在其中更改某些条形图的颜色。 我的条形图的代码如下:

 y = [0.04552309, -0.001730885, 0.023943445, 0.065564478, 0.032253892, 0.013442562, ...
      -0.011172323, 0.024595622, -0.100614203, -0.001444697, 0.019383706, 0.890249809];
 bar(y)

我希望前六个条形为黑色,最后六条条形为蓝色,但我不知道该怎么做。

5 个答案:

答案 0 :(得分:6)

您需要单独绘制它们(但在相同的轴上):

bar(1:6,y(1:6),'k')
hold on
bar(7:numel(y),y(7:end),'b')
set(gca,'xtick',1:numel(y))

enter image description here

答案 1 :(得分:2)

正如 HERE 的回答所暗示的那样,从 MATLAB R2017b 版本开始,您可以通过 CData 属性执行此操作。您可以在 THIS 文档页面找到更多信息。

简单地说,使用以下方法可以满足您的需求。

b = bar(rand(10,1));
b.FaceColor = 'flat';
% Change the color of the second bar. Value assigned defines RGB color value.
b.CData(2,:) = [.5 0 .5];

答案 2 :(得分:0)

以下内容改编自MATLAB Central的Bar plot with bars in different colors

y= [0.04552309, -0.001730885, 0.023943445, 0.065564478, 0.032253892, 0.013442562,    -0.011172323, 0.024595622, -0.100614203, -0.001444697, 0.019383706, 0.890249809];
for ii=1:12
  h = bar(ii-0.5, y(ii));
  if ii == 1
     hold on
  end
  if ii<=6
     col = 'k';
  else
     col = 'b';
  end    
  set(h, 'FaceColor', col,'BarWidth',0.4) 
end
axis([0 12 -0.2 1])
hold off

答案 3 :(得分:0)

无需单独绘图,这是简单的解决方案:

y= [0.04552309, -0.001730885, 0.023943445, 0.065564478, 0.032253892, 0.013442562,    -0.011172323, 0.024595622, -0.100614203, -0.001444697, 0.019383706, 0.890249809];
figure,
bar(y)

y1 = zeros(1,length(y));
y1(3:5) = y(3:5);
hold on
h = bar(y1)
set(h, 'FaceColor', 'k') 

See output

答案 4 :(得分:0)

像往常一样很晚,但有一种简单的方法来“欺骗”matlab。 首先定义颜色图(例如3种不同的颜色):

mycolors = lines(3) % or just specify each row by hand

然后按以下方式绘制条形图:

bar(x,diag(y),'stacked'); % x will be usually defined as x = 1:number_of_bars
colormap(mycolors);

这就是全部。神奇来自 diag 函数以及'堆叠'标记,这使得matlab认为你有更多数据(但它们都是0)。