Effacer les filtres
Effacer les filtres

Plot different colors while using loops.

307 vues (au cours des 30 derniers jours)
daniel.x16
daniel.x16 le 31 Mai 2011
Commenté : Leonard Zensen le 7 Déc 2021
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 commentaires
Karam Haidar
Karam Haidar le 23 Mai 2020
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!
Stephen23
Stephen23 le 23 Mai 2020
"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.

Connectez-vous pour commenter.

Réponse acceptée

Matt Fig
Matt Fig le 31 Mai 2011
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
  2 commentaires
Minkush Kansal
Minkush Kansal le 17 Déc 2017
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?
Leonard Zensen
Leonard Zensen le 7 Déc 2021
☺️

Connectez-vous pour commenter.

Plus de réponses (1)

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

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by