Main Content

La traducción de esta página está obsoleta. Haga clic aquí para ver la última versión en inglés.

Controlar colores, estilos de línea y marcadores en las gráficas

Cuando representa juntos varios conjuntos de datos en los mismos ejes, MATLAB® asigna de forma automática colores diferentes (y posiblemente marcadores y estilos de línea) a los objetos de la gráfica. Puede personalizar los colores, los estilos de línea y los marcadores cuando llame a las funciones de representación.

Por ejemplo, este código representa una línea roja continua y una línea verde de guiones con marcadores circulares.

plot([0 1 2],'-r')
hold on
plot([2 1 0],'--og')
hold off

También puede cambiar el color, el estilo de línea y el marcador estableciendo las propiedades en el objeto después de crearlo. Por ejemplo, este código crea una línea y, después, la cambia a una línea verde de guiones con marcadores circulares.

p = plot([0 1 2]);
p.Color = 'g';
p.LineStyle = '--';
p.Marker = 'o';

Estas técnicas son útiles para personalizar solo unas líneas. Sin embargo, son menos flexibles en otras situaciones, como al representar datos en un bucle o pasar datos matriciales a funciones de representación gráfica. En tales casos, puede cambiar las propiedades que controlan cómo MATLAB asigna automáticamente los colores, estilos de línea y marcadores.

Nota

Parte de la funcionalidad de los siguientes ejemplos está disponible a partir de la versión R2019b y parte de la funcionalidad está disponible a partir de la versión R2020a. Para modificar los colores y los estilos de línea de la gráfica en una versión anterior, consulte ¿Por qué las líneas de la gráfica son de diferentes colores? y Estilos de línea utilizados para la representación: LineStyleOrder.

Cómo funciona la asignación automática

MATLAB asigna los colores a los objetos de la gráfica (por ejemplo, los objetos Line, Scatter y Bar) alternando los colores indicados en la propiedad ColorOrder de los ejes. La propiedad ColorOrder contiene un arreglo de tripletes RGB, en los que cada triplete RGB define un color. El arreglo ColorOrder predeterminado contiene siete colores. Si crea más objetos que los colores que existen, los colores se repiten.

Si los objetos de la gráfica son compatibles con los marcadores y los estilos de línea, MATLAB también alterna entre la lista en la propiedad LineStyleOrder de los ejes. La propiedad LineStyleOrder contiene un arreglo de celdas de secuencias de caracteres, en las que cada secuencia de caracteres se corresponde con un estilo de línea (o un estilo de línea combinado con un marcador). El arreglo LineStyleOrder predeterminado solo contiene el estilo de línea continua, ('-'). Todos los colores del arreglo ColorOrder se utilizan con una secuencia de caracteres en el arreglo LineStyleOrder antes de que se utilice la siguiente secuencia. El ciclo continúa con cada nuevo objeto de la gráfica. Si hay más objetos que combinaciones de colores y secuencias de caracteres, se repite el ciclo.

Para un par determinado de arreglos ColorOrder y LineStyleOrder, los colores, los estilos de línea y los marcadores de un objeto concreto de la gráfica se determinan a partir del valor de SeriesIndex del objeto, que es una nueva propiedad disponible a partir de la versión R2020a. De forma predeterminada, la propiedad SeriesIndex es un número que se corresponde con el orden de creación del objeto, empezando desde 1. MATLAB utiliza el número para calcular los índices en los arreglos ColorOrder y LineStyleOrder.

Por ejemplo, cree un objeto de ejes con dos colores en su arreglo ColorOrder (rojo y azul) y dos estilos de línea en su arreglo LineStyleOrder (continua y de guiones). Después, represente cinco líneas.

ax = axes;
ax.ColorOrder = [1 0 0; 0 0 1];
ax.LineStyleOrder = {'-','--'};

hold on
for i = 1:5
   plot([i i+2])
end
hold off

Plot containing five lines with two colors and two line styles.

Esta tabla muestra el SeriesIndex, el índice en el arreglo ColorOrder y el índice en el arreglo LineStyleOrder para cada línea de la gráfica anterior.

 SeriesIndexIndexar en el arreglo ColorOrderIndexar en el arreglo LineStyleOrderAspecto de la línea
Primera línea111Línea continua roja
Segunda línea221Línea continua azul
Tercera línea312Línea de guiones roja
Cuarta línea422Línea de guiones azul
Quinta línea511Línea continua roja

Puede cambiar los colores, estilos de línea y marcadores de los objetos de la gráfica modificando las propiedades ColorOrder o LineStyleOrder de los ejes o cambiando las propiedades SeriesIndex de los objetos de la gráfica.

Cambiar los esquemas de colores y los estilos de línea

Al cambiar la propiedad ColorOrder de los ejes, cambia el esquema de colores de la gráfica. Al cambiar la propiedad LineStyleOrder de los ejes, cambian los estilos de línea (y posiblemente los marcadores) utilizados en la gráfica. Por ejemplo, represente ocho líneas en un bucle utilizando el estilo de línea y los colores predeterminados.

ax = axes;
hold on
for i = 0:7
    plot([i i+2])
end
hold off

Plot containing eight solid lines of with seven colors. The first color is repeated.

Sustituya el arreglo ColorOrder por un nuevo arreglo que contenga cuatro colores (también puede sustituir este arreglo con la función colororder). Después, sustituya el arreglo LineStyleOrder por un nuevo arreglo de celdas que contenga dos estilos de línea. Las líneas utilizan automáticamente los nuevos colores y estilos de línea.

% Updates existing plots in R2019b or later
ax.ColorOrder = [1 0 0; 0 1 0; 0 0 1; 0 0 0];
ax.LineStyleOrder = {'-','--'};

Plot containing eight lines with four colors and two line styles.

Cambiar los índices en los arreglos ColorOrder y LineStyleOrder

Al cambiar la propiedad SeriesIndex en un objeto de la gráfica, cambian los índices en los arreglos ColorOrder y LineStyleOrder. Cambiar los índices es útil cuando desea que el color, el estilo de línea y el marcador de un objeto se correspondan con los de otro objeto.

Por ejemplo, represente cuatro ondas sinusoidales en un bucle, variando la longitud de onda y la fase. En cada onda sinusoidal, establezca la propiedad SeriesIndex según la longitud de onda. En la gráfica resultante, las ondas sinusoidales que tienen la misma longitud de onda también tienen el mismo color.

x = linspace(0,10,200);
ax = axes;
hold on
for phi = 0:3:3
    for t = 1:2
        plot(x,sin(x/t + phi),'SeriesIndex',t) % Requires R2020a or later
    end
end
hold off

Plot containing two blue sine waves and two orange sine waves.

Para hacer que un par de ondas sinusoidales sea más prominente, cambie el orden de colores a un conjunto de colores diferente.

ax.ColorOrder = [0.8 0.8 0.9; 0.2 0.2 0.8];

Plot containing two light purple sine waves and two dark purple sine waves.

Consulte también

Funciones

Propiedades