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

 Respuesta aceptada

Mathieu NOE
Mathieu NOE el 18 de Nov. de 2021

0 votos

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 comentarios

Vartika Agarwal
Vartika Agarwal el 19 de Nov. de 2021
This code is not running properly
Mathieu NOE
Mathieu NOE el 19 de Nov. de 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 el 19 de Nov. de 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)
Mathieu NOE
Mathieu NOE el 19 de Nov. de 2021
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 el 19 de Nov. de 2021
Thanks Sir
It really works
Mathieu NOE
Mathieu NOE el 19 de Nov. de 2021
My pleasure !
would you mind accepting my answer ?
tx

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Etiquetas

Preguntada:

el 18 de Nov. de 2021

Comentada:

el 19 de Nov. de 2021

Community Treasure Hunt

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

Start Hunting!

Translated by