2010-02-27 28 views
5

Tôi gặp sự cố khi chỉnh sửa thanh màu trong MATLAB. Thanh màu được vẽ và tôi muốn thêm đơn vị (dB) cho phép đo cụ thể trên YTickLabels. Này được thực hiện bằng lệnh sau:MATLAB - Xác định lại YTickLabel

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

Nhưng khi tôi thay đổi kích thước hình, MATLAB định nghĩa lại các khoảng, và đầu ra được lặp lại hai lần, như:

10 dB, 20 dB, 30 dB, 10 dB , 20 dB, 30 dB thay vì 10 dB, 20 dB, 30 dB.

Làm thế nào để ngăn chặn MATLAB xác định lại các dấu trục Y của nó, vì vậy nó không làm hỏng thanh màu của tôi?

+0

Tôi không thể tạo lại hành vi mà bạn mô tả. Vui lòng mở rộng mã của bạn để mã tái tạo sự cố sau khi 'đóng tất cả; clear all' – AVB

Trả lời

5

Để giữ các giá trị đánh dấu trục y không bị thay đổi khi con số này được thay đổi kích cỡ, bạn sẽ phải hoặc là dứt khoát thiết lập 'YTick' property hoặc đặt 'YTickMode' property-'manual' (để giữ cho nó khỏi bị tự động thay đổi) . Bạn cũng có thể phải đặt rõ ràng 'YLim' property (hoặc đặt 'YLimMode' property thành 'manual') để giữ giới hạn của thanh màu không thay đổi. Dưới đây là một giải pháp khả thi:

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 

Bạn cũng có thể xác định các tính chất đánh dấu khi bạn tạo các thanh màu trong cuộc gọi đầu tiên của mình vào COLORBAR chức năng. Ví dụ, nếu bạn biết bạn sẽ muốn có 3 giá trị đánh dấu ở mức 10, 20 và 30 với "dB" thêm vào nhãn, bạn có thể tạo các thanh màu theo cách sau:

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 

Các giới hạn , đánh dấu các giá trị, và đánh dấu nhãn cũng nên vẫn không thay đổi khi con số được thay đổi kích cỡ.

+1

Nếu tôi có trình xử lý colorbar để ch, thì tôi không thể sử dụng thanh màu thay vì đặt, bởi vì nó phải được theo sau bởi 'xóa', 'ẩn' hoặc 'tắt'. Khi tôi sử dụng chức năng thiết lập nó hoạt động hoàn hảo. Cảm ơn –

+0

@Soren: Hmmm, có thể có vấn đề về phiên bản liên quan đến việc sử dụng COLORBAR thay vì SET (có thể là dành riêng cho các phiên bản mới hơn). Tôi sẽ cập nhật câu trả lời để chỉ sử dụng SET để không ai khác chạy vào cùng một vấn đề. – gnovice

0

Bạn cũng phải đặt thuộc tính YTick theo cách thủ công, vì vậy nó sẽ không thay đổi với thay đổi kích thước hình.

cytick = get(ch,'YTick');  
set(ch,'YTick',cytick); 
Các vấn đề liên quan