2012-04-14 24 views
7

Cuando grafico varias curvas en la misma trama usando hold on, cada curva tiene el mismo color (azul). Me gustaría que tengan todos los colores diferentes.Ciclo sobre los colores al trazar en MATLAB

Una solución que he visto es hacer un vector de color, p. c = ['k', 'g', 'r', ...] y lo repite, pero no me gusta esta solución. Las cosas se romperán si mi número de tramas es mayor que la longitud de mi vector de color c, y no quiero tener que definir c en cada archivo.

¿Existe una solución mejor?

+0

posible duplicado de [automáticamente trazar diferentes líneas de color] (http: // stackoverflow. com/questions/2028818/automatically-plot-different-coloured-lines) – chappjc

Respuesta

11

Pruebe usar hold all en su lugar. Sus curvas deben recorrer el mapa de color automáticamente. De help hold:

mantienen todas las bodegas del gráfico y la corriente de línea y color de línea de estilo de modo que los comandos de trazado posteriores no restablecen el valor de las propiedades LineStyleOrder ColorOrder y al principio de la lista. Los comandos Trazar continúan ciclando a través de los colores predefinidos y los estilos de línea desde donde se detuvo el último gráfico en la lista.

Puede examinar el mapa de colores con get(gca,'ColorOrder').

+0

Excelente, sabía que tenía que haber una solución simple. –

+0

Desde la misma página: "mantener todo es lo mismo que esperar." Nota: esta sintaxis se eliminará en versiones futuras. En su lugar, use "hold". –

3

También puede cambiar la propiedad predeterminada 'ColorOrder' sobre el medio ambiente mundial haciendo:

set(0,'DefaultAxesColorOrder',hsv(10)) 

donde he sustituido los colores por defecto para un conjunto de 10 colores dados por hsv mapa de colores. Por supuesto, también puede colocar cualquier otro conjunto de colores usando cualquiera de los generadores de color de mapa de colores (hsv, hot, cooper, lines, ..., use doc colormap para más detalles), como lo hice antes, o simplemente colocando cualquier nx 3 matriz. En caso de que quiera utilizar la lista de colores: {negro, verde, rojo} para el eje actual puede hacer:

set(gca,'ColorOrder', [0 0 0; 1 0 0; 0 1 0]) 
Cuestiones relacionadas