Plot different colors while using loops.

I am making a program that plots a variable amount of inputs from a database. Suffice to say that I have a variable number of arrays that I need to plot on the same figure. I can get the variables to plot fine with a loop.
for i=1:n
plot(array1(:,i),array2(:,i),'o')
end
This plots i arrays where array1 holds the x values and array 2 holds the y values.
I was wondering if:
a: There is a way to change the colors, in other words, make each dataset show up with different colors.
b: make a legend that coorsponds to the colors. I would like to see which data goes with which plot. I can pull the names from an array...I mainly need some way to color the different plots differently.

4 Comments

midhun
midhun on 28 Apr 2014
Edited: midhun on 28 Apr 2014
A simple rand function will generate this. add 'color',rand(1,3) ... Thats it...
eg:
for i=1:n
plot(array1,array2,'color',rand(1,3));
end
@midhun, grazzi. This worked. Thanks
does this literally only work with the numbers 1 and 3? I had a similar problem and it spit out an error with every other combination I tried!
"does this literally only work with the numbers 1 and 3?"
Yes, because RGB triples are defined as a vector of three values.
"I had a similar problem and it spit out an error with every other combination I tried!"
The documentation clearly explains what the valid inputs are for the 'color' option:
Reading the documentation is a much more efficient way to write code than just trying random changes.

Sign in to comment.

 Accepted Answer

You can make a cell array of your chosen colors, then:
C = {'k','b','r','g','y',[.5 .6 .7],[.8 .2 .6]} % Cell array of colros.
x = 0:.01:1;
hold on
for ii=1:7
plot(x,x.^ii,'color',C{ii},'marker','o')
end
legend({'x.^1';'x.^2';'x.^3';'x.^4';'x.^5';'x.^6';'x.^7'})
With the legend command, the first string in the list corresponds to the first line plotted, etc. Another approach would be to use one of the MATLAB colormaps:
CM = jet(n); % See the help for COLORMAP to see other choices.
then:
for ii=1:n
plot(array1(:,ii),array2(:,ii),'color',CM(ii,:),'marker','o')
end

3 Comments

Thanks a lot! It works nicely :)
Could you please explain how does the definition of cell array of colors ( 1st line of code) work?
i.e. C = {'k','b','r','g','y',[.5 .6 .7],[.8 .2 .6]} --how does this work exactly?
it does not work, man!!!!

Sign in to comment.

More Answers (1)

you can simply, and it will automatically change the colors for each series:
plot(array1,array2,'o')
Check out the legend command

Tags

Asked:

on 31 May 2011

Commented:

on 25 Oct 2024

Community Treasure Hunt

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

Start Hunting!