MATLAB Language
Controllo della colorazione di sottotrama in Matlab
Ricerca…
introduzione
Mentre stavo lottando con questo più di una volta, e il web non è chiaro su cosa fare, ho deciso di prendere ciò che è là fuori, aggiungendone alcuni dei miei per spiegare come creare sottotrame con una colorbar e loro sono ridimensionati in base ad esso.
Ho provato questo usando l'ultimo Matlab ma sono abbastanza sicuro che funzionerà nelle versioni precedenti.
Osservazioni
L'unica cosa che devi risolvere da solo è il posizionamento della barra dei colori (se vuoi visualizzarla del tutto). questo dipenderà dal numero di grafici che hai e dall'orientamento della barra.
La posizione e la dimensione sono definite usando 4 parametri - x_start, y_start, x_width, y_width. Di solito il grafico viene ridimensionato in unità normalizzate in modo che l'angolo in basso a sinistra corrisponda a (0,0) e in alto a destra a (1,1).
Come è fatto
Questo è un codice semplice che crea 6 sottototoli 3d e alla fine sincronizza il colore visualizzato in ognuno di essi.
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