2017-10-06 2 views
-1

Je veux faire un tas de parcelles (ou sous-parcelles) avec la même couleur, puis passer à la couleur suivante, faire à nouveau des parcelles, et ainsi de suite. Utiliser les couleurs par défaut sont bien. De plus, mon nombre de parcelles peut dépasser le nombre de couleurs par défaut, donc je devrai le parcourir. Comment puis-je atteindre cet objectif?Dans Matlab comment puis-je contrôler l'itérateur de couleur lors du traçage?

Répondre

0

Est-ce que quelque chose comme ceci a satisfait vos besoins? Si vous avez beaucoup de graphiques avec des couleurs qui changent fréquemment, vous pouvez créer un dictionnaire avec l'heure de l'index (lorsque le changement de couleur devrait se produire) comme clé et la couleur comme valeur. Le code ci-dessous est plus simple.

% Colors for 10 red plots and 5 black plots 
colors = [repmat('r', 1, 10), repmat('b', 1, 5)]; 
for i = 1:length(colors) 
    figure; plot(x, y, colors(i)); 
end 
+0

Non qui ne fonctionne pas parce qu'il est pré-défini pas combien de parcelles que je vais faire pour chaque couleur. – LWZ

+0

Commentaires dans MATLAB n'utilisez pas le symbole #, vous pourriez vouloir changer cela – xrr

0

Chaque fois que vous intrigue, vous pouvez simplement choisir au hasard la couleur:

% Create a random RGB color 
color = rand(1,3); 

% Plot as many times as needed with the newly created random color 
plot (X,Y,'color', color) 

Vous pouvez parcourir autant de fois que nécessaire

0

Lorsque vous créez un axe, il a la propriété ColorOrderIndex qui fait référence à l'index de la prochaine couleur à utiliser. La valeur initiale de ColorOrderIndex est 1, et chaque fois que vous ajoutez un nouveau tracé aux mêmes axes (sans effacer, c'est-à-dire avec hold on), la valeur augmente et passe dans toutes les couleurs (elles-mêmes stockées dans la propriété ColorIndex comme une matrice 2d avec trois colonnes, où chaque ligne représente un triplet RGB Cette matrice a une valeur par défaut, composée de 7 couleurs (dans Matlab R2015a), mais vous pouvez assigner toutes les autres couleurs que vous voulez). Ainsi, en vérifiant manuellement que la valeur de la propriété ColorOrderIndex n'augmente pas, vous pouvez conserver la même couleur pour le tracé suivant.

ax = axes; 
hold on; 
numberOfColors = length(ax.ColorOrder); 
ax.ColorOrderIndex = 1; 

plot([0,0],[0,1],'LineWidth',2); 
ax.ColorOrderIndex = mod(ax.ColorOrderIndex-2,numberOfColors)+1; % keep same color 
plot([1,1],[0,1],'LineWidth',2); 
ax.ColorOrderIndex = mod(ax.ColorOrderIndex-2,numberOfColors)+1; % keep same color 
plot([2,2],[0,1],'LineWidth',2); 

% change color 
plot([3,3],[0,1],'LineWidth',2); 
ax.ColorOrderIndex = mod(ax.ColorOrderIndex-2,numberOfColors)+1; % keep same color 
plot([4,4],[0,1],'LineWidth',2); 


% change color 
plot([5,5],[0,1],'LineWidth',2); 
ax.ColorOrderIndex = mod(ax.ColorOrderIndex-2,numberOfColors)+1; % keep same color 
plot([6,6],[0,1],'LineWidth',2); 
ax.ColorOrderIndex = mod(ax.ColorOrderIndex-2,numberOfColors)+1; % keep same color 
plot([7,7],[0,1],'LineWidth',2); 
ax.ColorOrderIndex = mod(ax.ColorOrderIndex-2,numberOfColors)+1; % keep same color 
plot([8,8],[0,1],'LineWidth',2); 

% and so on... 

Output of above code