2012-10-04 19 views
5

Mam szeroki zakres wartości i podczas drukowania w postaci rozproszenia (x, y, z), pasek kolorów przedstawiający oś Z przedstawia szeroki zakres wartości, teraz nie interesują mnie wartości niższego zakresu. Czy istnieje jakakolwiek metoda zmiany zakresu na pasku kolorów. Mam następującą część mojego kodu do spisku, mam również zamiar wykreślić logarytmu. Na przykład Chcę ustawić zakres w moim wykresie dziennika na 14 do maksymalnej wartości.jak ręcznie ustawić zakres na pasku kolorów?

Chcę, aby niektóre wartości w ogóle się nie wyświetlały. tak aby pasek kolorów miał ograniczony zasięg, powiedzmy od 14 do maksimum. Obecnie pokazuje się od 9 do maksimum na wykresie logu.

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

To nie jest bardzo jasne, co chcesz. Czy chcesz zmienić kolory na pasku kolorów, czy też chcesz uniemożliwić wyświetlanie niektórych wartości? – Junuxx

+0

Chcę, aby niektóre wartości nie były wyświetlane w ogóle. tak aby pasek kolorów miał ograniczony zasięg, powiedzmy od 14 do maksimum. Obecnie pokazuje się od 9 do maksimum na wykresie logu. – rcty

+0

dlaczego po prostu nie usuwać z mapy punktów, których nie chcesz pokazywać? – slayton

Odpowiedz

10

Uważam, że polecenie, którego szukasz, to caxis. Zastosowanie:

caxis([minValue maxValue]) 

Korzystanie caxis takiego, wszystkie wartości spoza zakresu [minValue maxValue] zostanie zabarwiona najniższej lub najwyższej wartości w mapie kolorów, odpowiednio.

Od colorbar i znajomych używają colormap, musisz dostosować bieżącą mapę kolorów, jeśli chcesz dostosować liczbę używanych kolorów. Czy to tak:

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

Oczywiście, łącząc to z caxis jest najmocniejszy.

Jeśli nie chcesz, aby pokazać pewne wartości poza zakresem, że nie jest to praca dla colorbar lub caxis, że to do ciebie - musisz dopasować danych, które kreślone tak, że wszystkie wartości ty don "t chcesz wykreślić są NaN. Spowoduje to, że Matlab zrozumie, że nie chcesz wykreślać tych danych:

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

Tak, użyłem tego, ale chcę, aby pasek kolorów pokazywał tylko 5 wartości, takich jak caxis ([14 16]) Chcę tylko 14 14.5 15 15.5 16 wartości, aby pokazać – rcty

+0

@rcty: Ah, tak jak. Musisz wtedy zdefiniować niestandardową mapę kolorów, pozwól mi edytować. –

0

Co powiesz na to?

% 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

w rzeczywistości jest to oś Z (gnd), która jest utowrzona na kolorowym pasku ... ale próbowałem też metody ur, nie działała – rcty

+0

Tak, to wybiera wartości xiy, gdzie gnd jest większy lub równy 14. Wszystkie punkty danych z gnd <14 są pomijane. Widzę, że zapomniałem zastosować ten sam filtr do GND. Poprawione. – Junuxx

0

Spróbuj tego:

cmap = colormap; % get current colormap 
cmap=cmap([min max],:); % set your range here 
colormap(cmap); % apply new colormap 
colorbar(); 
Powiązane problemy