Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Control de la selección automática de colores y estilos de línea en las gráficas

Cuando representa juntos varios conjuntos de datos en los mismos ejes, MATLAB® le ayuda a distinguir sus conjuntos de datos modificando su apariencia. Por ejemplo, cuando representa varias líneas, MATLAB asigna a cada línea un color de un conjunto de colores en función del orden de creación. Si crea más líneas que los colores que existen, MATLAB repite el ciclo de colores empezando por el primer color. Puede cambiar este comportamiento:

Este tema muestra cómo configurar gráficas de líneas y de dispersión, pero los mismos conceptos para controlar el ciclo de colores (y posiblemente los estilos de línea) se aplican a muchas otras gráficas, incluidas las gráficas bar, area y stem. Todos los ejemplos de este tema establecen las propiedades de los ejes después de representarlos. Esta secuencia de pasos es importante, porque la mayoría de las funciones de representación gráfica restablecen muchas de las propiedades de los ejes.

Nota

Si desea especificar un color o un estilo de línea para un elemento concreto de una gráfica, consulte Especificar colores de gráfica y Especificar la apariencia de las líneas y los marcadores en gráficas.

Especificar diferentes conjuntos de colores y estilos de línea

Los colores que MATLAB selecciona provienen de la propiedad ColorOrder de los ejes, que contiene una matriz de tres columnas de colores especificados como tripletes RGB. Un triplete RGB es un vector de tres elementos que contiene las intensidades de los componentes rojo, verde y azul de un color. Las intensidades deben estar en el rango [0, 1].

Si representa varias líneas, la primera utiliza el primer color de la matriz ColorOrder; la segunda, el segundo y así sucesivamente. Finalmente, los colores se repiten si la gráfica tiene más líneas que filas en la matriz. Este código crea varias gráficas de líneas que utilizan el orden de colores predeterminado. La primera línea es la de arriba. Debido a que la matriz ColorOrder predeterminada tiene siete filas, los colores se repiten después de la séptima línea.

plot([9 10 11 12])
hold on
plot([8 9 10 11])
plot([7 8 9 10])
plot([6 7 8 9])
plot([5 6 7 8])
plot([4 5 6 7])
plot([3 4 5 6])
plot([2 3 4 5])
plot([1 2 3 4])
hold off
legend("Location","northeastoutside")

Plot containing nine solid lines with a legend. The first seven lines have unique colors. The last two lines use the same colors as the first two lines.

Puede cambiar los colores de dos maneras:

  • Configure la propiedad ColorOrder de los ejes en una nueva matriz de tripletes RGB.

  • Llame a la función colororder. Esta función acepta tripletes RGB; nombres de los colores, como "red", y códigos hexadecimales de los colores (desde R2019b). También acepta cualquiera de los nombres de paleta predefinidos, como "gem", "reef" o "meadow" (desde R2023b).

Cree una nueva matriz que contenga los tripletes RGB para el rojo, el verde y el azul. A continuación, establezca la propiedad ColorOrder para esa matriz. La gráfica se actualiza inmediatamente con los nuevos colores.

mycolors = [1 0 0; 0 1 0; 0 0 1];
ax = gca; 
ax.ColorOrder = mycolors;

Plot containing nine solid lines with a legend. The first three lines have unique colors. The colors are repeated two more times for the last six lines.

MATLAB también alterna diferentes estilos de línea además de los colores. De forma predeterminada, solo existe un estilo de línea (una línea continua). Para especificar más estilos de línea, configure la propiedad LineStyleOrder de los ejes. Por ejemplo, este código especifica tres estilos de línea. La gráfica actualizada alterna entre todos los colores con un estilo de línea antes de mostrar el siguiente estilo de línea.

mylinestyles = ["-"; "--"; "-o"];
ax.LineStyleOrder = mylinestyles;

Plot containing three solid lines, three dashed lines, and three solid lines with circular markers. The three colors are repeated for each set of three lines. The plot also has a legend.

Especificar el orden del ciclo de los colores y estilos de línea

Desde R2023a

Cuando utilice varios colores y estilos de línea, puede especificar si la gráfica alterna entre todos los estilos de línea antes, después o a la vez que los colores estableciendo la propiedad LineStyleCyclingMethod. Esta propiedad puede tener uno de tres valores:

  • "aftercolor": alterna entre los estilos de línea después de pasar por los colores. Este es el valor predeterminado.

  • "beforecolor": alterna entre los estilos de línea antes de pasar por los colores.

  • "withcolor": alterna entre los estilos de línea a la vez que pasa por los colores.

Represente cuatro líneas. Establezca la propiedad LineStyleOrder en tres estilos de línea y establezca la propiedad ColorOrder en tres colores pasando un arreglo de tres códigos hexadecimales de color para la función colororder. Después, añada una leyenda.

% Plot four lines
plot([4 5 6 7])
hold on
plot([3 4 5 6])
plot([2 3 4 5])
plot([1 2 3 4])
hold off

% Set the line style order and color order
ax = gca;
ax.LineStyleOrder = ["-"; "--"; "-o"];
colororder(["#8040E6";"#1AA640";"#E68000"])
legend("Location","northeastoutside")

Plot containing four lines with three colors and two line styles. The first three lines are solid with unique colors. The last line is dashed and the has the same color as the first solid line. The plot also has a legend.

Por defecto, la gráfica alterna entre todos los colores con el primer estilo de línea (sólida) antes de mostrar el siguiente estilo de línea (discontinua). Dado que hay tres colores, solo se utilizan dos de los estilos de línea en la gráfica de cuatro líneas.

Si desea que más líneas sean distintas tanto en color como en estilo de línea, utilice la opción "withcolor" y especifique el mismo número de colores y estilos de línea. Por ejemplo, modifique el argumento LineStyleCylingMethod de la gráfica anterior a "withcolor". La gráfica actualizada alterna entre los colores y los estilos de línea a la vez.

ax.LineStyleCyclingMethod = "withcolor";

Plot containing four lines with three unique colors and three unique line styles. The last line has the same color and line style as the first line. The plot also has a legend.

Agrupar sus datos por color o estilo de línea

Desde R2020a

Para agrupar visualmente líneas relacionadas (u otros objetos de la gráfica), establezca la propiedad SeriesIndex de cada objeto que desee que reciba el mismo tratamiento visual en el mismo número. La propiedad SeriesIndex se indexa en ColorOrder y en los arreglos LineStyleOrder en función del valor de la propiedad LineStyleCyclingMethod. De este modo, diferentes objetos con el mismo valor SeriesIndex utilizan el mismo color (y estilo de línea, si procede).

Por ejemplo, represente dos conjuntos de 50 puntos dispersos.

x = 1:50;
meas1 = 0.25*x + randn(1,50);
scat1 = scatter(x,meas1);
hold on
meas2 = 0.5*x + randn(1,50) + 5;
scat2 = scatter(x,meas2);

Two sets of scattered points that are offset from each other vertically. The top set of points is red, and the bottom set of points is blue.

Calcule una línea ajustada para cada conjunto de puntos utilizando las funciones polyfit y polyval. Después, añada cada línea ajustada a la gráfica.

% Calculate fit lines for each set of measurements
p1 = polyfit(x,meas1,1);
y1_fit = polyval(p1,x);
p2 = polyfit(x,meas2,1);
y2_fit = polyval(p2,x);

% Plot fit lines
fitline1 = plot(x,y1_fit);
fitline2 = plot(x,y2_fit);
hold off

Plot of two sets of scattered points with fit lines that run through them. Each set of points and corresponding fit line are vertically displaced from the other set of points and fit line. The top set of points is red and the fit line is purple. The bottom set of points is blue and the fit line is yellow.

Las gráficas de puntos dispersos y las líneas ajustadas son de distintos colores. El motivo es que MATLAB selecciona un color nuevo de la matriz ColorOrder para cada gráfica nueva que añada a los ejes.

Haga coincidir el color de cada línea ajustada con su gráfica de puntos dispersos asociada. Establezca la propiedad SeriesIndex de cada línea en el mismo valor que tiene la gráfica de puntos dispersos asociada.

fitline1.SeriesIndex = scat1.SeriesIndex;
fitline2.SeriesIndex = scat2.SeriesIndex;

Plot of two sets of scattered points with fit lines that run through them. Each set of points and corresponding fit line are vertically displaced from the other set of points and fit line. The top set of points and fit line are both red. The bottom set of points and fit line are both blue.

Esta relación se mantiene aunque cambie los colores de la matriz ColorOrder. Por ejemplo, cambie los colores a morado y verde llamando a la función colororder.

colororder([0.5 0.25 0.90; 0.10 0.65 0.25])

Plot of two sets of scattered points with fit lines that run through them. Each set of points and corresponding fit line are vertically displaced from the other set of points and fit line. The top set of points and fit line are both green. The bottom set of points and fit line are both purple.

Consulte también

Funciones

Propiedades

Temas relacionados