Je suis en train de tracer plusieurs estimations de la densité du noyau sur le même graphe, et je veux qu’ils tous être de différentes couleurs. J’ai une solution kludged à l’aide d’une chaîne `` et stepping à travers elle pour chaque parcelle distincte, mais j’ai commencer à avoir des doublons après 7 itérations. Y a-t-il un moyen plus facile et plus efficace de faire cela et avec plus d’options de couleur ?
Réponses
Trop de publicités?Vous pouvez utiliser une palette des couleurs telles que HSV pour générer un jeu de couleurs. Par exemple :
MATLAB a 13 différents nommé carte des couleurs (« doc colormap » répertorie tous).
Une autre option pour traçage de lignes de couleurs différentes est d’utiliser la propriété LineStyleOrder ; dans la documentation de MATLAB pour plus d’informations, consultez définition de la couleur des lignes pour la table à tracer .
En fait, un bon raccourci méthode pour obtenir les couleurs de cycle est d'utiliser hold all;
à la place de hold on;
. Chaque successives plot
va faire tourner (automatiquement) par le biais de MATLAB palette par défaut.
À partir de l'MATLAB site sur hold
:
hold all
détient le la parcelle et de la ligne courante de la couleur et le style de ligne, de sorte que par la suite, le traçage des commandes ne réinitialisez pas le ColorOrder et LineStyleOrder valeurs de propriété dans le début de la liste. Traçage des commandes continuent à vélo à travers les couleurs prédéfinies et des styles de ligne de où la dernière parcelle arrêté dans la liste.
Cette très tard, mais peut-être utile de répondre à mailles très bien avec l' ColorOrder
de la propriété.
L' ColorOrder
axes
de la propriété permet de MATLAB pour parcourir automatiquement une liste de couleurs lors de l'utilisation d' hold all
(Voir Annexe ci-dessous pour savoir comment set
/get
le ColorOrder
pour un axe spécifique ou à l'échelle mondiale via DefaultAxesColorOrder
). Toutefois, par défaut MATLAB spécifie seulement une courte liste de couleurs (seulement 7 comme de R2013b) pour faire défiler, et d'autre part, il peut être difficile de trouver un bon jeu de couleurs pour plus de la série de données. Pour les 10 parcelles, évidemment on ne peut pas compter sur la valeur par défaut ColorOrder
.
Une excellente façon de définir N visuellement couleurs distinctes est avec la "Générer le Maximum de Perception des Couleurs Distinctes" (GMPDC) présentation sur le MATLAB Central de Fichier d'Échange de Fichiers. Il est mieux décrit dans les mots de l'auteur:
Cette fonction génère un ensemble de couleurs qui se distinguent par la référence au "Laboratoire" espace de couleur, qui correspond de plus près à perception humaine de la couleur de RVB. Reçu une grande liste de couleurs possibles, il choisit de manière itérative l'entrée dans la liste qui est la plus éloignée (dans l'espace de Laboratoire) de tous les précédemment choisi entrées.
Par exemple, lorsque le 25 couleurs sont demandés:
Le GMPDC soumission a été choisi sur MathWorks' blog officiel que les choix de la Semaine en 2010, en partie en raison de la possibilité de demander un nombre arbitraire de couleurs (contrairement à MATLAB construit en 7 couleurs par défaut). Ils ont même fait l'excellente suggestion pour définir MATLAB ColorOrder
sur le démarrage,
distinguishable_colors(20)
Bien sûr, vous pouvez définir l' ColorOrder
pour un seul axe ou tout simplement de générer une liste de couleurs à utiliser de quelque façon que vous aimez. Par exemple, pour générer 10 "au maximum de perception des couleurs distinctes" et de les utiliser pour les 10 parcelles sur le même axe (mais pas à l'aide de ColorOrder
):
% 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
Le processus est simplifié, ne nécessitant pas d' for
boucle, avec l' ColorOrder
de l'axe de la propriété:
% X of size N-by-P-by-2
mpdc10 = distinguishable_colors(10)
ha = axes; hold(ha,'on')
set(ha,'ColorOrder',mpdc10) % <--- HERE
plot(X(:,:,1),X(:,:,2),'-.') % loop NOT needed, 'Color' NOT needed
ANNEXE
Pour obtenir l' ColorOrder
tableau RVB utilisé pour l'axe actuel,
get(gca,'ColorOrder')
Pour obtenir la valeur par défaut ColorOrder
pour les nouveaux axes,
get(0,'DefaultAxesColorOrder')
Exemple de paramétrage global d' ColorOrder
avec 10 couleurs sur MATLAB démarrer, en startup.m
:
set(0,'DefaultAxesColorOrder',distinguishable_colors(10))
Vers la fin de la partie. Je cherchais dans ce moi et viens de trouver sur cette option axes appelée ColorOrder, vous pouvez spécifier l’ordre des couleurs pour la session ou tout simplement pour la figure, puis juste tracer un tableau et laisser MATLAB automatiquement faire défiler les couleurs spécifiées.
Voir modification de la ColorOrder par défaut
exemple de