2012-04-14 27 views
7

Quando si tracciano più curve sullo stesso grafico utilizzando hold on, ogni curva assume automaticamente lo stesso colore (blu). Mi piacerebbe che avessero tutti colori diversi.Ciclo su colori durante il tracciamento in MATLAB

Una soluzione che ho visto è creare un vettore di colore, ad es. c = ['k', 'g', 'r', ...] e loop su di esso, ma non mi piace questa soluzione. Le cose si romperanno se il mio numero di grafici è maggiore della lunghezza del mio vettore di colore c e non voglio definire c in ogni file.

C'è una soluzione migliore?

+0

possibile duplicato del [tracciare automaticamente diverse linee colorate] (http: // StackOverflow. it/questions/2028818/automatic-plot-different-colored-lines) – chappjc

risposta

11

Provare a utilizzare hold all invece. Le tue curve dovrebbero scorrere automaticamente sulla mappa dei colori. Da help hold:

tenere tutte le stive del grafico e l'attuale colore della linea e la linea di stile in modo che le successive comandi plottaggio non resettano l' valori delle proprietà LineStyleOrder ColorOrder e all'inizio della lista. Il comando di plottaggio dei comandi continua a scorrere tra i colori predefiniti e gli stili linea da cui l'ultimo grafico si è fermato nell'elenco.

È possibile esaminare la mappa dei colori con get(gca,'ColorOrder').

+0

Eccellente, sapevo che doveva esserci una soluzione semplice. –

+0

Dalla stessa pagina: "hold all è lo stesso di hold on. Nota: questa sintassi verrà rimossa in una versione futura. Utilizzare hold on invece." –

3

È inoltre possibile modificare la proprietà predefinita 'ColorOrder' sull'ambiente globale facendo:

set(0,'DefaultAxesColorOrder',hsv(10)) 

dove ho sostituito i colori predefiniti per una serie di 10 colori fornite dal hsv mappa dei colori. Naturalmente, puoi anche posizionare qualsiasi altro set di colori usando uno dei generatori di colore della mappa (hsv, hot, cooper, lines, ..., usa doc colormap per maggiori dettagli), come ho fatto prima, o semplicemente posizionando qualsiasi nx 3 matrice. Nel caso in cui si desidera utilizzare la lista dei colori: {nero, verde, rosso} per l'asse attuale si dovrebbe fare:

set(gca,'ColorOrder', [0 0 0; 1 0 0; 0 1 0]) 
Problemi correlati