2010-02-27 1 views
5

MATLAB에서 컬러 바를 편집하는 데 문제가 있습니다. 컬러 바가 그려 지므로 YTickLabels에서 특정 측정에 대한 단위 (dB)를 추가하고 싶습니다. 이것은 다음과 같은 명령에 의해 수행됩니다MATLAB - YTickLabel 재정의

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

을하지만 그림 크기를 조정할 때, MATLAB는 간격을 재정의하고, 출력은 같은, 두 번 반복된다

10dB, 20dB, 30dB, 10dB , 20dB, 30dB 대신에 30dB이다.

MATLAB이 Y 축 틱을 재정의하는 것을 방지하여 내 컬러 막대를 엉망으로 만들지 않도록하려면 어떻게해야합니까?

+0

설명하는 동작을 재현 할 수 없습니다. '모두 닫은 후에 문제를 재현 할 수 있도록 코드를 확장하십시오. 모두 지우기 ' – AVB

답변

5

에는 명시 적으로 'YTick' property 설정해야하거나 설정할 것이다 'YTickMode' property (자동으로 변경되는 것을 유지하기 위해) 'manual' 행 . 색상 막대의 한계가 변경되지 않도록하려면 'YLim' property을 명시 적으로 설정하거나 'YLimMode' property'manual'으로 설정해야 할 수도 있습니다. 당신이 COLORBAR 기능에 대한 초기 호출에서 색상 막대를 만들 때

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 

또한 진드기 속성을 정의 할 수 있습니다 : 여기에 하나 개의 가능한 솔루션입니다.

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 

이 제한 예를 들어, 당신이 알고있는 경우, 10 라벨에 추가 "dB"20, 30를 3 개 틱 값을 할 것입니다, 당신은 다음과 같은 방법으로 색상 막대를 만들 수 있습니다 , 눈금 값 및 눈금 레이블은 그림의 크기가 변경 될 때도 변경되지 않습니다.

+1

내가 colorbar 핸들러를 ch로 얻으면 set 대신 colorbar를 사용할 수 없습니다.'delete ','hide '또는'off '가 따라야하기 때문입니다. set 함수를 사용할 때 완벽하게 작동합니다. 감사합니다. –

+0

@Soren : 음, 아마도 SET 대신 COLORBAR을 사용하는 것과 관련하여 버전 문제가있을 수 있습니다 (아마도 최신 버전에만 해당됩니다). 아무도 다른 사람이 같은 문제를 겪지 않도록 SET를 사용하도록 답변을 업데이트하겠습니다. – gnovice

0

수동으로 YTick 속성을 설정해야하므로 Figure의 크기가 변경되지 않습니다.

도면의 크기가 변경 될 때 변경되는 Y 축 눈금 값을 유지하기 위해
cytick = get(ch,'YTick');  
set(ch,'YTick',cytick);