2015-03-29 25 views
5

tôi đang làm nhiều hay ít như sau:Làm cách nào để áp dụng các bản đồ màu khác nhau ở các vị trí con khác nhau?

figure 
for ii=1:4 
    subplot(2,2,ii) 
    imshow(image(ii)) 
    hcb = colorbar; 

    switch ii 
     case 1 
      colormap(myMap) 
      set(hcb,'YTickLabel', ..) 
      set(hcb,'YTick', ..) 
     case 2 
      colormap(myMap) 
      set(hcb,'YTickLabel', ..) 
      set(hcb,'YTick', ..) 
     case 3 
      colormap(myMap) 
      set(hcb,'YTickLabel', ..) 
      set(hcb,'YTick', ..) 
     case 4 
      colormap(aDifferentMap) 
      set(hcb,'YTickLabel', ..) 
      set(hcb,'YTick', ..) 
    end 
end 

Những gì tôi đang phải đối mặt là gọi colormap(aDifferentMap) cho cốt truyện thứ tư (ii=4), ốc vít mọi thứ trong ba lô theo thời gian: trong hình thức của tôi tất cả colorbars có aDifferentMap bản đồ màu, cũng có một số vấn đề với thuộc tính YTick.

Nếu tôi nhận xét colormap(aDifferentMap) trong trường hợp 4, tất cả đều hoạt động tốt (ngoại trừ subplot thứ tư, sẽ có bản đồ sai và không có Ytickes nào).

Tôi có thể giải quyết vấn đề này bằng cách nào? Làm thế nào tôi có thể thiết lập các thuộc tính của subplot(2,2,4) mà không ảnh hưởng đến các subplots 1: 3?

Trả lời

5

Đối với Matlab 2014a và trước áp dụng answer of Phil Goddard và bạn cần sử dụng ví dụ: freezeColors từ FileExchange.


Trong Matlab 2014b vấn đề đã được giải quyết với update of the graphics engine to version HG-2. Bây giờ bản đồ màu ảnh hưởng đến tất cả các trục trong hình, trừ khi bạn đặt riêng một bản sao trục. (từ doc)

figure 
ax1 = subplot(2,1,1); 
surf(peaks) 
colormap(ax1,spring) 

ax2 = subplot(2,1,2); 
surf(peaks) 
colormap(ax2,winter) 

enter image description here

+1

Sau khi kiểm tra nhanh meta, tôi thấy đây là câu trả lời tôi nên chấp nhận vì nó hoàn chỉnh hơn và có thể hữu ích hơn cho người đọc trong tương lai. Tuy nhiên, trên R2011a, tôi tìm thấy giải pháp của mình thông qua liên kết của Phil Goddard. Cụ thể là tôi đã sử dụng cả hai [freezeColors] (http://www.mathworks.com/matlabcentral/fileexchange/7943-freezecolors---unfreezecolors) và [cbfreeze] (http://www.mathworks.com/matlabcentral/fileexchange/24371 các công cụ -colormap-and-colorbar-utilities - jul-2014-), như được gợi ý bởi tác giả 'freezeColors'. – natario

+0

Sẽ tuyệt đối chấp nhận câu trả lời của Phil, khi anh ấy giải quyết vấn đề của bạn trước tiên. Tôi chỉ cảm thấy câu trả lời của anh ấy, câu trả lời của anh ấy không hoàn chỉnh, đặc biệt là vì những thay đổi gần đây về hiệu lực của nó. – thewaywewalk

1

Colormap là thuộc tính của hình, chứ không phải trục, do đó, thay đổi nó cho một subplot thay đổi nó cho tất cả các subplots.

Hãy xem Using multiple colormaps in a single figure để biết ví dụ về giải pháp.

0

Bạn có thể sử dụng ind2rgb nếu bạn chỉ muốn hiển thị hình ảnh với colormaps khác nhau trong một con số:

load flujet; 
subplot(221); image(ind2rgb(X, gray(63))); 
subplot(222); image(ind2rgb(X, jet(63))); 
subplot(223); image(ind2rgb(X, hot(63))); 
subplot(224); image(ind2rgb(X, copper(63))); 

colorbars Tuy nhiên, khác nhau vẫn có thể không được hiển thị trong các phiên bản trước của MATLAB.

Các vấn đề liên quan