Custom colored bar graph for a vector

1 Ansicht (letzte 30 Tage)
Sowmya MR
Sowmya MR am 29 Mär. 2016
Kommentiert: Chad Greene am 29 Mär. 2016
Hi, I have a vector x=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15] and corresponding y=[1 2 3 1 1 1 2 3 3 1 3 3 3 2 3]. I should generate a bar plot {bar(x,y)} such that bar corresponding to different numbers are in different colors. For example: Bar color corresponding to 1's should be red, Bar color for all 2's should be yellow and so on....Can someone please help with this?

Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 29 Mär. 2016
x=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]
y=[1 2 3 1 1 1 2 3 3 1 3 3 3 2 3]
cl='rgyb'
for k=1:numel(x)
bar(x(k),y(k),'FaceColor' ,cl(y(k)))
hold on
end
  3 Kommentare
Chad Greene
Chad Greene am 29 Mär. 2016
Nice! Or a more generalized form in case y = y+5;
x=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15] ;
y=[1 2 3 1 1 1 2 3 3 1 3 3 3 2 3];
uniquey = unique(y);
Ncolors = length(uniquey);
hold on
cmap = jet(Ncolors);
for k = 1:length(x)
bar(x(k),y(y(k)),'facecolor',cmap(uniquey==y(k),:))
end
Chad Greene
Chad Greene am 29 Mär. 2016
Sowmya- To get the text labels put this at the end:
text(x,y,num2str(y'),'horiz','center','vert','bottom')
box off

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Chad Greene
Chad Greene am 29 Mär. 2016
Bearbeitet: Chad Greene am 29 Mär. 2016
You can set the facecolor of bar(s) when you call the bar function. Below I'm defining the rgb values of 15 colors with jet. The display is colorful, but perhaps not the most elegant design for data display. Fewer colors is usually better.
x=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15] ;
y=[1 2 3 1 1 1 2 3 3 1 3 3 3 2 3];
hold on
cmap = jet(length(x));
for k = 1:length(x)
bar(x(x==x(k)),y(x==x(k)),'facecolor',cmap(k,:))
end

Kategorien

Mehr zu Discrete Data Plots finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by