2010-07-12 25 views
21

Tengo 6 vectores que quiero trazar. ¿Cómo puedo hacer cada trama con un color diferente (aleatorio)? Con el siguiente código, la trama se limita a un color para los seis vectores.Matlab elige el color aleatorio para trazar

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

posible duplicado de [Trazar automáticamente líneas de colores diferentes en MATLAB] (http://stackoverflow.com/questions/2028818/automatically-plot-different-colored-lines-in-matlab) – gnovice

Respuesta

40

Puede tener PLOT automáticamente elegir los colores de línea para usted. Si todos los 6 vectores tienen la misma longitud, puede colocar las coordenadas xey en matrices N-by-6 X y Y y pasarlas a PLOT. Un color diferente se utilizará para cada columna:

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

También podría utilizar algunos de la incorporada en el colormaps para generar un conjunto de colores, a continuación, utilizar estos cuando se trazan cada línea por separado. Por ejemplo:

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 
+0

muchas gracias. Me pregunto si tengo, por ejemplo, 21 vectores diferentes, ¿puedo cambiar cmap = hsv (6) a cmap = hsv (21) – Jessy

+0

@Jessy: Sí, 'hsv (N)' devolverá un mapa de colores N-por-3 con un color RGB por fila. – gnovice

+2

+1 para usar mapas de color. Descubrí que los colores puramente aleatorios funcionan muy mal para fines de visualización: el contraste entre los colores es a menudo insuficiente y los colores son demasiado claros o demasiado oscuros. El muestreo uniforme a lo largo de uno de los mapas de color estándar proporciona combinaciones de color mucho más agradables y legibles. – Kena

4

Para crear un mapa de colores al azar, se puede hacer la siguiente

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

Sin embargo, como dije en mi comentario a la respuesta de gnovice, recogiendo los colores de un mapa de colores proporciona generalmente mucho combinaciones de colores más legibles

Cuestiones relacionadas