I want a bar graph that creates 10 different bars. I want every bar to be different color. How do I achieve this?

 Akzeptierte Antwort

Mathieu NOE
Mathieu NOE am 18 Nov. 2021

0 Stimmen

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 Kommentare

Vartika Agarwal
Vartika Agarwal am 19 Nov. 2021
This code is not running properly
Mathieu NOE
Mathieu NOE am 19 Nov. 2021
hello
what matlab release are you running ?
can you tell what is the error message that appears in your command window ?
Vartika Agarwal
Vartika Agarwal am 19 Nov. 2021
I am using Matlab 2018a
Error in bar (line 23)
h = bar(N-i+1, data_co2(i));
I want a bar graph that that creates 10 different bars. I want every bar to be different color.
y=[20 10 5 3 12 18 25 20 30 40];
bar(y)
ok
can you check first that you actually have bar installed (should be as it's a basic graphical function)
let's try something simpler
y=[20 10 5 3 12 18 25 20 30 40];
N = length(y);
map = colormap(jet(N));
figure(1);
hold on
for i=1:N
h = bar(i, y(i));
set(h, 'FaceColor', map(i,:)) ;
end
hold off
Vartika Agarwal
Vartika Agarwal am 19 Nov. 2021
Thanks Sir
It really works
Mathieu NOE
Mathieu NOE am 19 Nov. 2021
My pleasure !
would you mind accepting my answer ?
tx

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by