MATLAB Language
Controlando la coloración de la subparcela en Matlab
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