2010-11-23 38 views
9

J'ai un tableau de données que je voudrais tracerComment définir le style linéaire par défaut pour les graphiques dans MATLAB?

temp=0.5*rand(500,10); 
[~,offset]=meshgrid(1:500,1:10); 
figure(101) 
plot(temp+offset') 

Comment puis-je définir le style de ligne pour changer automatiquement le style suivant une fois que les couleurs de ligne ont été par un cycle?

Pour cet exemple, j'aimerais que les lignes 8-10th aient un style de ligne différent. Je peux le faire manuellement mais j'aimerais que Matlab le fasse pour moi si je peux définir une option par défaut quelque part.

Répondre

15

Votre première tendance pourrait être de simplement changer le 'LineStyleOrder' property des axes avant de tracer vos données. Malheureusement, les fonctions de tracé de haut niveau telles que PLOT réinitialisent le 'LineStyleOrder' property des axes à sa valeur par défaut '-' avant le traçage. Une solution consiste à change the default value utilisé par tous les objets axes au root level. Par exemple:

set(0,'DefaultAxesLineStyleOrder',{'-',':'}); 

utilisera d'abord une ligne solide, puis une ligne en pointillé, puis répéter à nouveau si nécessaire pour chaque parcelle. Notez que vous pouvez également utiliser un 'ColorOrder' property personnalisé avec des fonctions de traçage de haut niveau en modifiant également la valeur par défaut à la racine. L'exemple suivant changera si PLOT cycles seulement entre rouge, vert et bleu:

set(0,'DefaultAxesColorOrder',[1 0 0; 0 1 0; 0 0 1]); 

Au lieu de se soucier de différents styles de ligne, une autre solution à votre problème serait de définir l'ordre des couleurs par défaut pour avoir plus de seulement 7 couleurs. Une fois que les valeurs de propriété par défaut sur la racine sont définies, elles resteront ainsi jusqu'à la fermeture de MATLAB. Lors de la réouverture, les valeurs de propriété par défaut seront rétablies à leurs valeurs définies en usine. Les commandes telles que CLEAR ne redéfinissent pas les propriétés par défaut à leurs valeurs définies en usine. Au lieu de cela, vous devez définir la valeur de la propriété par défaut 'remove' pour annuler les valeurs définies par l'utilisateur, comme ceci:

set(0,'DefaultAxesLineStyleOrder','remove'); %# Sets the default back to '-' 

Comme une autre alternative à la modification des propriétés par défaut utilisés par tous axes objets, si vous changez le NextPlot property de un axe individuel à tout sauf'replace' vous pouvez ensuite modifier les propriétés 'LineStyleOrder' ou 'ColorOrder' à ce que vous voulez et PLOT ne les réinitialisera pas à leurs valeurs par défaut. Par exemple, cela devrait faire ce que vous voulez ainsi:

set(gca,'NextPlot','add','LineStyleOrder',{'-',':'}); 
plot(temp+offset'); 
+0

Donc, si l'OP veut le style de cycle de ' 'r -', 'g -', 'b -', 'r:', 'g : ',' b: '', ils pourraient mettre' 'ColorOrder'' à' [1 0 0; 0 1 0; 0 0 1] 'et LineStyleOrder à' {'-', '-', '-', ':', ':', ':'} ', n'est-ce pas? – Jonas

+3

@Jonas: En fait, ils n'auront besoin de mettre LineStyleOrder qu'à '{'-', ':'}', car PLOT fera défiler toutes les couleurs une fois avec le premier style de ligne, puis avec le second style de ligne. En d'autres termes, les couleurs circulent dans une boucle interne, style de ligne dans une boucle externe. – gnovice

+0

Merci d'avoir éclairci ça pour moi! – Jonas