2012-10-04 21 views
5

Tengo una amplia gama de valores y al trazar como una dispersión (x, y, z), la barra de colores que muestra el eje z muestra una amplia gama de valores, ahora no estoy interesado en los valores de rango inferior. ¿Hay algún método para cambiar el rango en la barra de colores? Tengo que trazar la siguiente parte de mi código, también intento trazar el diagrama de registro. Por ej. Quiero establecer el rango en mi diagrama de registro a 14 hasta el valor máximo.cómo configurar el rango en la barra de colores manualmente?

Quiero que algunos valores no se muestren en absoluto. de modo que la barra de color tiene un rango limitado, digamos del 14 al máximo. Actualmente se muestra de 9 a máximo en el diagrama de registro.

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

No es muy claro lo que quiere. ¿Desea cambiar los colores en la barra de colores o desea evitar que se muestren algunos valores? – Junuxx

+0

Quiero que algunos valores no se muestren en absoluto. de modo que la barra de color tiene un rango limitado, digamos del 14 al máximo. Actualmente se muestra de 9 a máximo en el diagrama de registro. – rcty

+0

¿por qué no eliminar los puntos que no desea que se muestren en la trama? – slayton

Respuesta

10

Creo que caxis es el comando que está buscando. Uso:

caxis([minValue maxValue]) 

Usando caxis como este, todos los valores fuera del rango [minValue maxValue] será de color con el valor más bajo o más alto en el mapa de colores, respectivamente.

Dado que colorbar y sus amigos utilizan colormap, tendrá que ajustar el mapa de colores actual si desea ajustar el número de colores utilizados. Hacer esto de esta manera:

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

Por supuesto, combinando esto con caxis es el más poderoso.

Si no desea mostrar algunos valores fuera de rango, eso no es un trabajo para colorbar o caxis, que depende de usted - usted tiene que ajustar los datos que se traza de modo que todos los valores que don 't quieren trazar son NaN. Si lo hace, Matlab comprenderá que no desea trazar estos datos:

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

yup, lo he usado, pero quiero que la barra de colores muestre solo 5 valores como caxis ([14 16]) quiero solo 14 14.5 15 15.5 16 valores para mostrar – rcty

+0

@rcty: Ah, como tal. Tendrás que definir un mapa de colores personalizado, déjame editar. –

0

¿Qué le parece esto?

% 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

en realidad es el eje z (gnd) que se encuentra en la barra de colores ... pero también probé su método, no funcionó – rcty

+0

Sí, esto selecciona los valores xey donde ynd es mayor o igual que 14. Todos los puntos de datos con un gnd <14 se omiten. Veo que olvidé aplicar el mismo filtro a gnd sin embargo. Corregido – Junuxx

0

Prueba esto:

cmap = colormap; % get current colormap 
cmap=cmap([min max],:); % set your range here 
colormap(cmap); % apply new colormap 
colorbar(); 
Cuestiones relacionadas