2011-03-28 14 views
6

ejemplo mínimo que no lo logra:¿Cómo superponer un trazado de pcolor con un trazado de contorno que utiliza un mapa de color diferente?

[X,Y,Z] = peaks; 
figure; 
pcolor(X,Y,Z); 
shading flat; 
hold all; 
axes; 
contour(X,Y,Z); 
colormap gray; % this should only apply to the contour plot axes... 
axis off;  % ... but it doesn't 

Esta muestra tanto el gráfico de contorno y la trama de color seudo en el mapa de colores de escala de grises. Sin embargo, lo que quiero lograr es solo convertir los contornos en grises.

Esto es solo un ejemplo minimalista, en realidad, la gráfica de contorno es de datos diferentes que tienen un rango diferente, por lo que también se requieren dos configuraciones independientes de caxis.

+0

relacionados: http://stackoverflow.com/questions/1744667/plot-overlay-matlab –

Respuesta

4

Puede solucionar el problema catenating dos mapas de colores, y asegurarse de que los valores de las funciones son tales que acceden a la parte derecha del mapa de colores:

cm = [jet(64);gray(64)]; 
figure, 
pcolor(X,Y,Z) 
shading flat 
hold on 
%# Z in the contour starts after the maximum 
%# of Z in pcolor 
contour(X,Y,Z-min(Z(:))+max(Z(:))+2,'LineWidth',2) 
%# apply the colormap 
colormap(cm) 

enter image description here

Para una mayor solución conveniente, es posible que también desee echar un vistazo a this file exchange pick of the week

+1

Gracias. Uno puede tener que tener cuidado si los rangos de funciones difieren en órdenes de magnitud. También echaré un vistazo a [freezeColors] (http://www.mathworks.com/matlabcentral/fileexchange/7943) con el que se ha vinculado al –

+0

@Tobias Kienzler: Sí, puede ser complicado obtener la escala de datos/colormaps bien. Además, puede ser molesto si la información sobre datos no muestra los valores correctos. Mi solución es realmente una solución. – Jonas

Cuestiones relacionadas