Respuesta tardía, pero dos cosas para agregar:
- Para obtener información sobre cómo cambiar la
'ColorOrder'
propiedad y cómo establecer un valor predeterminado global con 'DefaultAxesColorOrder'
, consulte el "Apéndice" al final de esta publicación.
- Existe una gran herramienta en MATLAB Central File Exchange para generar cualquier cantidad de colores visualmente distintos, si tiene la Caja de herramientas de procesamiento de imágenes para usarla. Siga leyendo para conocer los detalles.
La ColorOrder
axes
propiedad permite MATLAB para el ciclo de forma automática a través de una lista de colores cuando se utiliza hold on/all
(de nuevo, véase el Apéndice continuación para saber cómo set
/ get
la ColorOrder
de un eje específico o de forma global a través DefaultAxesColorOrder
). Sin embargo, de forma predeterminada, MATLAB solo especifica una lista corta de colores ( solo 7 a partir de R2013b) para recorrer y, por otro lado, puede ser problemático encontrar un buen conjunto de colores para más series de datos. Para 10 parcelas, obviamente no puede confiar en el valor predeterminado ColorOrder
.
Una excelente manera de definir N colores visualmente distintos es con el envío "Generar colores máximos perceptualmente distintos" (GMPDC) en MATLAB Central File File Exchange . Se describe mejor en las propias palabras del autor:
Esta función genera un conjunto de colores que se distinguen por referencia al espacio de color "Lab" , que se asemeja más a la percepción humana del color que el RGB. Dada una gran lista inicial de colores posibles, elige iterativamente la entrada en la lista que está más alejada (en el espacio del laboratorio) de todas las entradas elegidas previamente.
Por ejemplo, cuando se solicitan 25 colores:
La presentación de GMPDC fue elegida en el blog oficial de MathWorks como Elección de la semana en 2010 en parte debido a la capacidad de solicitar una cantidad arbitraria de colores (en contraste con los 7 colores predeterminados de MATLAB integrados). Incluso hicieron la excelente sugerencia de configurar MATLAB en ColorOrder
el inicio en,
distinguishable_colors(20)
Por supuesto, puede configurar el ColorOrder
para un solo eje o simplemente generar una lista de colores para usar de la manera que desee. Por ejemplo, para generar 10 "colores máximos perceptualmente distintos" y usarlos para 10 gráficos en el mismo eje ( pero sin usar ColorOrder
, por lo que se requiere un bucle ):
% Starting with X of size N-by-P-by-2, where P is number of plots
mpdc10 = distinguishable_colors(10) % 10x3 color list
hold on
for ii=1:size(X,2),
plot(X(:,ii,1),X(:,ii,2),'.','Color',mpdc10(ii,:));
end
El proceso se simplifica, sin necesidad de for
bucle, con la ColorOrder
propiedad del eje :
% X del tamaño N-por-P-por-2
mpdc10 = colores_distinguibles (10)
ha = ejes; espera (ja, 'encendido')
set (ha, 'ColorOrder', mpdc10)% --- set ColorOrder AQUÍ ---
plot (X (:,:, 1), X (:,:, 2), '-.')% loop NO es necesario, 'Color' NO es necesario. ¡Hurra!
APÉNDICE
Para obtener la ColorOrder
matriz RGB utilizada para el eje actual,
get(gca,'ColorOrder')
Para obtener el valor predeterminado ColorOrder
para ejes nuevos,
get(0,'DefaultAxesColorOrder')
Ejemplo de configuración de nuevo global ColorOrder
con 10 colores en MATLAB start, en startup.m
:
set(0,'DefaultAxesColorOrder',distinguishable_colors(10))