web-dev-qa-db-fra.com

Quelle est l'ordre des couleurs MATLAB par défaut?

J'ai un complot avec deux histogrammes. Cependant, il est difficile de dire quel histogramme sur le graphique provient du premier ensemble de données et qui représente graphiquement le deuxième ensemble de données. Il y a une ligne de couleur différente pour chaque histogramme: l'un est bleu et l'autre vert. Est-ce que MATLAB par défaut 'ColorOrder' varie selon les appareils? Sinon - quelle est la commande?

20
Toad22222

Bonne question! Il existe un ordre de couleur par défaut pour MATLAB. Notez que pour les versions antérieures à R2014b, l'ordre des couleurs par défaut pour MATLAB utilise la carte de couleurs jet. Dans la carte couleur jet, le premier tracé est bleu, suivi du deuxième tracé vert. Pour les versions après R2014b, cela suit la carte de couleur parula, où le premier tracé serait un bleu plus clair suivi du deuxième tracé étant une sorte d'orange cuivrée. Si vous voulez réellement connaître l'ordre des couleurs de votre tracé, assurez-vous que le tracé est ouvert dans MATLAB, puis procédez comme suit:

get(gca,'colororder')

Cela renverra une matrice 2D où chaque ligne vous donne la proportion de rouge, vert et bleu pour chaque tracé que vous produisez. Sur ma machine au moment de cette publication, lorsque j'utilisais MATLAB R2013a et avec Mac OSX 10.9.5, voici ce que j'ai obtenu:

>> get(gca,'colororder')

ans =

         0         0    1.0000
         0    0.5000         0
    1.0000         0         0
         0    0.7500    0.7500
    0.7500         0    0.7500
    0.7500    0.7500         0
    0.2500    0.2500    0.2500

Chaque ligne vous donne les valeurs rouges, vertes et bleues pour une couleur particulière. La première ligne indique la première couleur à aller sur le tracé, suivie par la deuxième ligne indiquant la deuxième couleur et ainsi de suite.

En tant que tel, l'ordre des couleurs ci-dessus est:

  1. Bleu pur
  2. Une nuance de vert plus claire
  3. Rouge pur
  4. Un mélange de vert et de bleu cyan
  5. Un mélange de rouge et de bleu, qui est magenta
  6. Un mélange de rouge et de vert qui est jaune
  7. Un mélange léger de rouge, vert et bleu, qui ressemble à un gris foncé.

Actuellement (10 mars 2016), j'utilise MATLAB R2015a et voici la carte des couleurs que j'obtiens:

>> get(gca,'colororder')

ans =

         0    0.4470    0.7410
    0.8500    0.3250    0.0980
    0.9290    0.6940    0.1250
    0.4940    0.1840    0.5560
    0.4660    0.6740    0.1880
    0.3010    0.7450    0.9330
    0.6350    0.0780    0.1840

Les tuples RVB dans ce cas sont légèrement plus complexes et il est donc difficile de déduire ce qu'ils sont en regardant simplement les couleurs.


En prime, nous pouvons créer une image qui visualise ces couleurs pour vous. En supposant que vous ayez la boîte à outils de traitement d'image, voici le code que j'ai écrit pour visualiser ces couleurs pour chaque tracé que vous placez dans votre figure.

colours = permute(get(gca, 'colororder'), [1 3 2]);
colours_resize = imresize(colours, 50.0, 'nearest');
imshow(colours_resize);

Voici ce que j'ai obtenu pour MATLAB R2013a:

enter image description here

En exécutant à nouveau ce code dans MATLAB R2015a, voici ce que j'obtiens:

enter image description here


Alternativement, vous pouvez toujours utiliser un legend qui délimite quel histogramme provient de quelles données.

27
rayryeng

Il existe une palette de couleurs pour cet objectif spécifique - lines ( Introduit avant R2006a ). Voici ce que dit lines.m:

%LINES  Color map with the line colors.
%   LINES(M) returns an M-by-3 matrix containing a "ColorOrder"
%   colormap. LINES, by itself, is the same length as the current
%   colormap. If no figure exists, MATLAB uses the length of the
%   default colormap.

Si vous ouvrez la documentation de lines , vous pouvez voir une image d'aperçu qui ressemble beaucoup à ce qui apparaît dans réponse de rayryeng :

enter image description here

Ainsi, tant que vous utilisez le colormap par défaut, pour connaître les couleurs des premières n lignes, il vous suffit d'appeler lines(n).

20
Dev-iL