MATLAB: How to draw special figures like this:

MATLABplotting

Suppose i have 3(N) boolean array: P1, P2, P3 with total 16 index in each array.
If it is 0 then gray or white will be shown, else some colour will be chosen.

Best Answer

val = [1 1 2 3 2 1 3 1 2 2 3 2 2 2 4 4];
col = [1 1 0; 1 0 0; 0 1 0; 0.5 0.5 0.5];
axes
hold on
for i = 1:numel(val)
bar(i, 1, 1, 'FaceColor', col(val(i), :));
end
set(gca, 'PlotBoxAspectRatio', [16 4 1])
axis off
axis tight
Use a different subplot for each pattern.