Buscar..


Introducción

Ya que estuve luchando con esto más de una vez, y la web no tiene muy claro qué hacer, decidí tomar lo que hay por ahí, agregando algo propio para explicar cómo crear subparcelas que tienen una barra de colores y Se escalan de acuerdo a ello.

He probado esto usando el último Matlab pero estoy bastante seguro de que funcionará en versiones anteriores.

Observaciones

Lo único que necesita resolver por sí mismo es la posición de la barra de colores (si desea mostrarla). esto dependerá de la cantidad de gráficos que tengas y de la orientación de la barra.

La posición y el tamaño se definen utilizando 4 parámetros: x_start, y_start, x_width, y_width. La gráfica se suele escalar a unidades normalizadas de modo que la esquina inferior izquierda se corresponda con (0,0) y la superior derecha con (1,1).

Cómo está hecho

Este es un código simple que crea 6 subplots 3d y al final sincroniza el color que se muestra en cada uno de ellos.

c_fin = [0,0];
[X,Y] = meshgrid(1:0.1:10,1:0.1:10);

figure; hold on;
for i = 1 : 6
    Z(:,:,i) = i * (sin(X) + cos(Y));

    ax(i) = subplot(3,2,i); hold on; grid on;
    surf(X, Y, Z(:,:,i));
    view(-26,30);
    colormap('jet');
    ca = caxis;
    c_fin = [min(c_fin(1),ca(1)), max(c_fin(2),ca(2))];
end

%%you can stop here to see how it looks before we color-manipulate

c = colorbar('eastoutside');
c.Label.String = 'Units';
set(c, 'Position', [0.9, 0.11, 0.03, 0.815]); %%you may want to play with these values
pause(2); %%need this to allow the last image to resize itself before changing its axes
for i = 1 : 6
    pos=get(ax(i), 'Position');
    axes(ax(i));
    set(ax(i), 'Position', [pos(1) pos(2) 0.85*pos(3) pos(4)]);
    set(ax(i),'Clim', c_fin); %%this is where the magic happens
end


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow