2015-03-29 8 views
5

robię mniej więcej następujący:Jak zastosować różne mapy kolorów w różnych partiach?

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 

Co mam skierowane jest wywołanie colormap(aDifferentMap) za czwarty działki (ii=4), śruby rzeczy do poprzednich trzech działek: w moim ostatnim rysunku wszystko colorbars mają colormap aDifferentMap, a także pewne problemy z atrybutem YTick.

Jeśli skomentuję colormap(aDifferentMap) w przypadku 4, wszystko działa dobrze (z wyjątkiem czwartego wątku, który będzie miał złą mapę kolorów i nie będzie żadnego Ytickes).

Jak sobie z tym poradzić? Jak mogę ustawić właściwości subplot(2,2,4) bez wpływania na partycje 1: 3?

Odpowiedz

5

Dla Matlab 2014a i przed dotyczy answer of Phil Goddard i trzeba użyć np. freezeColors z FileExchange.


W Matlab 2014b został rozwiązany problem z update of the graphics engine to version HG-2. Teraz colormap wpływa na wszystkie osie na rysunku, chyba że ustawisz mapę kolorów osobno. (od 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

Po szybkim sprawdzeniu meta znalazłem odpowiedź, którą powinienem zaakceptować, ponieważ jest bardziej kompletny i prawdopodobnie bardziej przydatny dla przyszłych czytelników. Jednak będąc na R2011a, znalazłem swoje rozwiązanie przez link Phila Goddarda. Mianowicie użyłem obu [freezeColors] (http://www.mathworks.com/matlabcentral/fileexchange/7943-freezecolors---unfreezecolors) i [cbfreeze] (http://www.mathworks.com/matlabcentral/fileexchange/24371 -barormap-and-colorbar-utilities - jul-2014-) narzędzi, jak sugeruje autor 'freezeColors'. – natario

+0

Byłoby absolutnie w porządku, aby przyjąć odpowiedź Phila, ponieważ najpierw rozwiązał twój problem. Po prostu poczułem, że jego odpowiedź nie była kompletna, szczególnie z powodu ostatnich zmian w ważności. – thewaywewalk

0

Można wykorzystać ind2rgb jeśli po prostu chcesz pokazać obrazów z różnymi colormaps w rysunku:

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))); 

Jednak różnych colorbars nadal mogą nie będą wyświetlane we wcześniejszych wersjach MATLAB.

Powiązane problemy