views:

177

answers:

2

I have 6 vectors which I want to plot. How I can make each plot with different color (random)? With the code below, the plot limited to one color for all six vectors.

plot(x,y,'-rs','LineWidth',1,...
      'MarkerEdgeColor','k',...
      'MarkerFaceColor','g',...
      'MarkerSize',5);
+1  A: 

You can have PLOT automatically choose line colors for you. If all 6 of your vectors are the same length, you can put the x and y coordinates into N-by-6 matrices X and Y and pass these to PLOT. A different color will be used for each column:

plot(X,Y,'-s');  %# Plots lines with square markers

You could also use some of the built-in colormaps to generate a set of colors, then use these when you plot each line separately. For example:

cmap = hsv(6);  %# Creates a 6-by-3 set of colors from the HSV colormap
for i = 1:6     %# Loop 6 times
  plot(X(:,i),Y(:,i),'-s','Color',cmap(i,:));  %# Plot each column with a
                                               %#   different color
end
gnovice
thank you very much. I wonder if I have e.g. 21 different vectors, can I change the cmap = hsv(6) to cmap = hsv(21)
Jessy
@Jessy: Yes, `hsv(N)` will return an N-by-3 color map with one RGB color per row.
gnovice
+1 for using colormaps. I've found that purely random colors perform very poorly for display purposes - the contrast between colors is often insufficient and the colors too light or too dark. Sampling evenly along one of the standard color maps gives much more pleasant and readable color combinations.
Kena
A: 

To create a random color map, you could do the following

myMap = rand(nbColors, 3);
for i = 1:nbColors
  plot(X(:,i),Y(:,i),'-s','Color',myMap(i,:));
end

However, as I stated in my comment to gnovice's answer, picking colors out of a colormap generally provides much more readable color combinations.

Kena

related questions