# Why isn't my color assignment working in this bar graph?

6 views (last 30 days)

Show older comments

Hi all, I am trying to assign colors to individual bars in a bar plot that I'm making. I was able to do this before using a 3x3 matrix, but now with the 1x3 matrix (called "Slopes" below) I keep getting the error, "??? Index exceeds matrix dimensions. Error in ==> NColdthree at 93 set(bar1(2),'FaceColor','r')" when I try to run the following script:

Slopes = [-0.002 0.010 -0.012];

subplot(1,3,2) bar1 = bar(Slopes);

%Set the colors of the three bars set(bar1(1),'FaceColor','b') set(bar1(2),'FaceColor','r') set(bar1(3),'FaceColor','g')

%Add legend, axis labels, etc. legend(bar1,'P','E','P-E') ylabel 'Regression Coefficients' xlabel('Northern Cold*') title('Linear Trend','FontSize',16) axis([0 4 -0.05 0.05])

Any thoughts on why I can't specify the colors for the 2nd and 3rd bars? Thanks!

##### 0 Comments

### Answers (2)

Image Analyst
on 13 Nov 2013

See attached demo.

##### 4 Comments

Image Analyst
on 14 Nov 2013

Vivek Selvam
on 13 Nov 2013

Edited: Vivek Selvam
on 13 Nov 2013

This link says how to. Hope the following illustration helps.

Slopes = [-0.002 0.010 -0.012];

numBars = numel(Slopes);

x = 1:numBars;

colStr = 'rgbymc';

for i = 1:numBars

barHan = bar(x(i),Slopes(i));

set(barHan,'FaceColor',colStr(i));

hold on

end

In case you have a lot of bars (therefore need more colors), you can make use of colormaps ( doc colormap ). For example using jet colormap (replace the corresponding lines in the above code):

colStr = jet(numBars); % line 4

set(barHan,'FaceColor',colStr(i,:)); % line 7

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!