
Multiple Colors in Bar Graph
2 views (last 30 days)
Show older comments
Vartika Agarwal
on 18 Nov 2021
Commented: Mathieu NOE
on 19 Nov 2021
I want a bar graph that creates 10 different bars. I want every bar to be different color. How do I achieve this?
0 Comments
Accepted Answer
Mathieu NOE
on 18 Nov 2021
hello
see example below
clc
clear all
close all
data_co2 = [.142 .156 .191 .251 0.5 0.86 2.2 4 8.3];
data_gdp = rand(size(data_co2));
uniNames = {'eno','pck','zwf','foo','bar','jhy','vfd','vre','zqs'};
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%% main code %%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
data_min = min(data_gdp);
data_max = max(data_gdp);
map = colormap('jet');
[mmap,nmap] = size(map);
f = figure(1);
N = numel(data_co2);
for i=1:N
h = bar(N-i+1, data_co2(i));
if i == 1, hold on, end
% now define col value based on data value (min data value maps to colormap map index 1
% and max data value maps to colormap map last index);
ind = fix(1+(mmap-1)*(data_gdp(i)-data_min)/(data_max-data_min));
set(h, 'FaceColor', map(ind,:)) ;
% Display the values as labels at the tips of the bars.
xtips1 = h.XEndPoints;
ytips1 = h.YEndPoints + 0.25;
labels1 = string(h.YData);
text(xtips1,ytips1,labels1,'HorizontalAlignment','center')
end
%
set(gca, 'XTickLabel', '')
xlabetxt = uniNames;
xpos = -max(xlim)/25;
t = text(1:N,repmat(xpos,N,1), xlabetxt,'Rotation',45,'FontSize',15,'HorizontalAlignment','center');
ylabel('CO² concentration','FontSize',12)
title('CO² concentration vs. GDP range','FontSize',15)
hcb=colorbar('ver');
hcb.Title.String = "GDP range";
hcb.Title.FontSize = 13;

6 Comments
More Answers (0)
See Also
Categories
Find more on Blue in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!