2010-02-27 12 views
5

Ho un problema con la modifica della barra di colore in MATLAB. La barra dei colori è disegnata e voglio aggiungere l'unità (dB) per la misurazione specifica su YTickLabels. Questo viene fatto seguenti comandi:MATLAB - Ridefinizione di YTickLabel

cy = get(ch,'YTickLabel'); 
set(ch,'YTickLabel',[]); 
set(ch,'YTickLabel',strcat(cy,{' dB'})); 

Ma quando ho ridimensionare la figura, MATLAB ridefinisce gli intervalli, e l'uscita è ripetuto due volte, come:

10 dB, 20 dB, 30 dB, 10 dB , 20 dB, 30 dB anziché 10 dB, 20 dB, 30 dB.

Come impedire a MATLAB di ridefinire i suoi ticks dell'asse Y, in modo da non rovinare la barra dei colori?

+0

Non riesco a riprodurre il comportamento che descrivi. Per favore espandi il tuo codice, in modo che riproduca il problema dopo 'close all; clear all' – AVB

risposta

5

Per mantenere i valori di tic dell'asse y vengano modificate quando la figura è ridimensionata, si dovrà esplicitamente impostare la 'YTick' property o impostare il 'YTickMode' property a 'manual' (per evitare che venga cambiato automaticamente) . Potrebbe anche essere necessario impostare esplicitamente lo 'YLim' property (o impostare lo 'YLimMode' property su 'manual') per impedire che i limiti della barra dei colori cambino. Ecco una possibile soluzione:

labels = get(ch,'YTickLabel'); %# Get the current labels 
set(ch,'YLimMode','manual',... %# Freeze the current limits 
     'YTickMode','manual',... %# Freeze the current tick values 
     'YTickLabel',strcat(labels,{' dB'})); %# Change the labels 

È inoltre possibile definire le proprietà di spunta quando si crea la barra di colore nella vostra chiamata iniziale alla funzione COLORBAR. Ad esempio, se si sa che si vuole avere 3 valori tick a 10, 20, e 30 con "dB", ha aggiunto alle etichette, è possibile creare la barra dei colori nel modo seguente:

ch = colorbar('YLim',[10 30],...      &# The axis limits 
       'YTick',[10 20 30],...     %# The tick locations 
       'YTickLabel',{'10 dB','20 dB','30 dB'}); %# The tick labels 

Questi limiti , i valori di tick e le etichette di tick dovrebbero anche rimanere invariati quando la figura viene ridimensionata.

+1

Se ottengo il comando colorbar su ch, non posso usare la colorbar invece di set, perché deve essere seguito da 'delete', 'hide' o 'off'. Quando uso la funzione set funziona perfettamente. Quindi grazie. –

+0

@Soren: Hmmm, forse c'è un problema di versione riguardo all'uso di COLORBAR invece di SET (forse è specifico per le versioni più recenti). Aggiornerò la risposta per utilizzare semplicemente SET in modo che nessun altro si imbatta nello stesso problema. – gnovice

0

È necessario impostare manualmente anche la proprietà YTick, quindi non cambierà con il ridimensionamento delle figure.

cytick = get(ch,'YTick');  
set(ch,'YTick',cytick); 
Problemi correlati