Barplot colors

Matlab - Bar plot with different colors

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

Simple example

barh( 1, 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

→ horizontal histogram

→ https://mathworks.com/help/matlab/ref/colorspec.html