Plot‎ > ‎Bar plot‎ > ‎

Barplot colors

Matlab - Bar plot with different colors

barh(bar-IDs, bar-values, 'FaceColor', bar-color );


Simple example

barh1,       65     , 'FaceColor', 'blue'  ); hold on
barh( [2,3,4], [50,3,5], 'FaceColor', 'red'   );
barh( [5,6]  , [70,8]  , 'FaceColor', 'green' ); hold off
set(gca,'YTick',[1:6])

% alternatively: plot colors one by one, but set non-group values zero



Complete example

% generate percentage data, define groups, and colors
perc   = [   8;  70;   5;   3;  50; 65];
groups = [   1;   1;   2;   2;   2;  3];
names  = {'A1';'A2';'B1';'B2';'B3';'C'};
colorset = [0.3, 0.5, 0.7;... % blue
            0.8, 0.3, 0.3;... % red
            0.6, 0.7, 0.3]    % green

% for horizontal barplot: switch order of bars
  perc     = flipud(perc);
  groups   = flipud(groups);
  names    = flipud(names);
  colorset = flipud(colorset);

% (1) plot empty bar boxes (100 percent white box)
num = numel(perc);
box100perc = repmat(100,num,1);
barh(1:num,box100perc, 'FaceColor',[1,1,1] );
hold on;

% (2) plot colored bars separately for each color-group (set non-group values to zero):
g = unique(groups);
for i=1:numel(g)
  IDs = find(ismember(groups,g(i)));
  x = zeros(size(perc)); x(IDs)=perc(IDs); 
  barh(1:num, x, 'FaceColor',colorset(i,:) );
end
hold off

% add title, labels, etc
axis([0,100,0,num+1]);
xlabel('Percent')
set(gca,'YTickLabel',names)
set(gca, 'box', 'off')
title('Colored barplot', 'Color',[0.5,0,0.5])







see also