2012-10-04 26 views
5

Tôi có một loạt các giá trị và trong khi vẽ như một phân tán (x, y, z), thanh màu hiển thị trục z cho thấy một loạt các giá trị, bây giờ tôi không quan tâm đến các giá trị phạm vi thấp hơn. Có phương pháp nào để thay đổi dải màu trong thanh màu hay không. Tôi có phần sau của mã của tôi để vẽ, tôi cũng có ý định vẽ cốt truyện. Ví dụ: Tôi muốn thiết lập phạm vi trong lô gỗ log của tôi thành 14 đến giá trị lớn nhất.cách đặt phạm vi trong thanh màu theo cách thủ công?

Tôi muốn một số giá trị không được hiển thị. để thanh màu có dải giới hạn, nói từ 14 đến tối đa. Hiện tại nó đang hiển thị từ 9 đến tối đa trong lô gỗ.

scatter(x(1:end-1), y(1:end-1), 5, gnd); 

title('G plot (m^-^2)'); 

colorbar('eastoutside'); 

xlabel(' X-axis (microns)'); 

ylabel('Y-axis (microns)'); 

figure; 

log_g=log10(gnd); 

scatter(x(1:end-1), y(1:end-1), 5,log_g); 

colorbar('eastoutside'); 

xlabel(' X-axis (microns)'); 

ylabel('Y-axis (microns)'); 

title('G Density, log plot (m^-^2)'); 
+0

Đó là không phải là rất rõ ràng những gì bạn muốn. Bạn có muốn thay đổi màu sắc trong thanh màu hay bạn muốn ngăn không cho hiển thị một số giá trị? – Junuxx

+0

Tôi muốn một số giá trị không được hiển thị. để thanh màu có dải giới hạn, nói từ 14 đến tối đa. Hiện tại nó đang hiển thị từ 9 đến tối đa trong lô gỗ. – rcty

+0

lý do tại sao không chỉ loại bỏ các điểm bạn không muốn hiển thị từ cốt truyện? – slayton

Trả lời

10

Tôi tin rằng caxis là lệnh bạn đang tìm kiếm. Cách sử dụng:

caxis([minValue maxValue]) 

Sử dụng caxis như thế này, tất cả các giá trị bên ngoài phạm vi [minValue maxValue] sẽ được tô màu với giá trị thấp nhất hoặc cao nhất trong bản đồ màu, tương ứng.

Kể từ colorbar và bạn bè sử dụng colormap, bạn sẽ phải điều chỉnh bản đồ màu hiện tại nếu bạn muốn điều chỉnh số lượng màu được sử dụng. Làm như vậy:

%# get current colormap 
map = colormap; 

%# adjust for number of colors you want 
rows = uint16(linspace(1, size(map,1), NUM_COLORS)) ; 
map = map(rows, :); 

%# and apply the new colormap 
colormap(map); 

Tất nhiên, kết hợp điều này với caxis là mạnh nhất.

Nếu bạn không muốn hiển thị một số giá trị ngoài phạm vi, đó không phải là công việc cho colorbar hoặc caxis, tùy thuộc vào bạn - bạn sẽ phải điều chỉnh dữ liệu được vẽ để tất cả các giá trị bạn don 't muốn vẽ là NaN. Làm như vậy sẽ làm cho Matlab hiểu rằng bạn không muốn vẽ các dữ liệu này:

data(indices_to_data_not_to_plot) = NaN; 
surf(x,y,data); %# or whatever you're using 
+0

yup, tôi đã sử dụng điều đó, nhưng tôi muốn thanh màu chỉ hiển thị 5 giá trị như caxis ([14 16]) tôi chỉ muốn 14 14.5 15 15.5 16 giá trị để hiển thị – rcty

+0

@rcty: Ah, như vậy. Bạn sẽ phải xác định một bản đồ màu tùy chỉnh sau đó, hãy để tôi chỉnh sửa. –

0

Làm thế nào về điều này?

% don’t know why, but apparently your x and y are one value too long? 
x = x(1:end-1); y = y(1:end-1); 

% only plot values of 14 or higher 
scatter(x(gnd>=14), y(gnd>=14), 5, gnd(gnd>=14); 
+0

thực sự là trục z (gnd) được đặt trên thanh màu ... nhưng tôi đã thử phương pháp ur quá, nó không hoạt động – rcty

+0

Có, điều này chọn giá trị x và y trong đó gnd lớn hơn hoặc bằng 14. Tất cả các điểm dữ liệu với gnd <14 bị bỏ qua. Tôi thấy tôi quên áp dụng cùng một bộ lọc để mặc dù gnd. Đã sửa. – Junuxx

0

Hãy thử điều này:

cmap = colormap; % get current colormap 
cmap=cmap([min max],:); % set your range here 
colormap(cmap); % apply new colormap 
colorbar(); 
Các vấn đề liên quan