2011-05-09 12 views
5

Quiero que cada subtrama comparta la misma escala de barras de colores. Sé que caxis funciona para enteros mayores que 1, pero parece que hay un problema al usar caxis con valores como 0.001.Barra de colores común para gráficos de dispersión en Matlab con números pequeños

x = 0:1:10; 
y = 0:1:10; 
z1 = .1:-.01:0; 
z2 = .01:-.001:0; 

figure; 
subplot(1,2,1); 
scatter(x,y,10,z1); colorbar; 
subplot(1,2,2); 
scatter(x,y,10,z2); colorbar; 

ex1

Ahora quiero tener las subparcelas de dispersión a tener una escala de barra de colores común. Traté de usar caxis, sin embargo, no obtengo los resultados deseados. El eje izquierdo no escala correctamente, ya que todos son de color marrón. ¿Cómo se puede corregir esto?

ca = [0 .01]; 
figure; 
subplot(1,2,1); 
scatter(x,y,10,z1); caxis(ca); colorbar; 
subplot(1,2,2); 
scatter(x,y,10,z2); caxis(ca); colorbar; 

enter image description here

Respuesta

8

Lo que están viendo es el comportamiento correcto de caxis. Cuando configura caxis([0 0.01]), a todos los valores superiores a 0.01 se les asigna el color rojo (o marrón, como se llame). En z1, todos, excepto el último punto, son mayores que 0.01 y están marcados en rojo. Si probaste el caxis([0 0.1]), verás que el gráfico de la derecha es todo azul. El rango dinámico de tus dos subparcelas es un orden de magnitud aparte y por lo tanto, no podrás representar ambos adecuadamente con los mismos límites de caxis. .

¿Ha intentado utilizar una escala de colores logarítmica? Pruebe lo siguiente:

subplot(1,2,1); 
scatter(x,y,10,log10(z1)); colorbar; 
caxis([-3 -1]) 

subplot(1,2,2); 
scatter(x,y,10,log10(z2)); colorbar; 
caxis([-3 -1]) 

enter image description here

¿El gráfico de arriba se ven mejor?

+0

Eso funciona! Puedo cambiar las etiquetas de tic en la barra de color a '1e-4', etc. – Elpezmuerto

Cuestiones relacionadas