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:
Especificando diferentes conjuntos de colores y estilos de línea: cree su propio conjunto de colores o estilos de líneas para distinguir sus datos todavía más.
Especificando el orden del ciclo de colores y estilos de línea: especifique si desea alternar entre todos los estilos de línea antes, después o a la vez que los colores.
Agrupando sus datos por color o estilo de línea: agrupe visualmente los elementos relacionados. Por ejemplo, al representar varios conjuntos de puntos dispersos, puede asociar cada conjunto de puntos una línea ajustada del mismo color.
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")
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. 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;
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;
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")
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";
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);
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
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;
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])
Consulte también
Funciones
plot
|scatter
|gca
|colororder
|validatecolor