2010-02-27 11 views
5

Ich habe ein Problem mit der Bearbeitung der Farbleiste in MATLAB. Die Farbleiste wird gezeichnet und ich möchte die Einheit (dB) für die spezifische Messung auf YTickLabels hinzufügen. Dies wird durch folgende Befehle durchgeführt:MATLAB - YTickLabel neu definieren

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

Aber wenn ich die Zahl die Größe neu definiert MATLAB die Intervalle, und der Ausgang wird zweimal wiederholt, wie:

10 dB, 20 dB, 30 dB, 10 dB , 20 dB, 30 dB statt 10 dB, 20 dB, 30 dB.

Wie verhindere ich, dass MATLAB seine Y-Achsen-Ticks neu definiert, damit es meine Farbleiste nicht durcheinanderbringt?

+0

Ich kann das beschriebene Verhalten nicht reproduzieren. Bitte erweitern Sie Ihren Code, so dass er das Problem nach "alles schließen" reproduziert. clear all ' – AVB

Antwort

5

Um von der y-Achse tick Werte zu halten geändert wird, wenn die Zahl der Größe verändert wird, müssen Sie entweder explizit die 'YTick' property oder stellen Sie den 'YTickMode' property-'manual' gesetzt (damit er nicht automatisch geändert werden) . Sie müssen möglicherweise auch explizit die 'YLim' property setzen (oder 'YLimMode' property auf 'manual' setzen), damit sich die Grenzen der Farbleiste nicht ändern. Hier ist eine mögliche Lösung:

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 

Sie können auch die Zecke Eigenschaften definieren, wenn Sie die Farbleiste in Ihrem ersten Aufruf der Funktion COLORBAR erstellen. Zum Beispiel, wenn Sie wissen, werden Sie bei 10 3 tick Werte haben, 20 und 30 mit „dB“ auf den Etiketten hinzugefügt haben, können Sie die Farbleiste auf folgende Weise erstellen:

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 

Diese Grenzwerte , Tick-Werte und Tick-Labels sollten ebenfalls unverändert bleiben, wenn die Größe der Figur geändert wird.

+1

Wenn ich den colorbar-Handler zu ch, dann kann ich nicht die Farbleiste anstelle von setzen, weil es gefolgt werden muss durch "löschen", "verstecken" oder "aus". Wenn ich die Set-Funktion verwende, funktioniert es perfekt. So danke. –

+0

@Soren: Hmmm, vielleicht gibt es ein Versions-Problem in Bezug auf die Verwendung von COLORBAR anstelle von SET (vielleicht ist es spezifisch für neuere Versionen). Ich werde die Antwort aktualisieren, um SET zu verwenden, damit niemand sonst auf dasselbe Problem stößt. – gnovice

0

Sie müssen auch die YTick-Eigenschaft manuell einstellen, damit sich die Größe nicht ändert.

cytick = get(ch,'YTick');  
set(ch,'YTick',cytick); 
Verwandte Themen