MATLAB Language
Contrôle de la coloration des sous-parcelles dans Matlab
Recherche…
Introduction
Comme je me débattais plus d’une fois, et que le Web n’était pas très clair sur ce qu’il fallait faire, j’ai décidé de prendre ce qui se passait, d’ajouter un peu de mien pour expliquer comment créer des sous-intrigues comportant sont mis à l'échelle en fonction de cela.
Je l'ai testé avec la dernière version de Matlab, mais je suis sûr que cela fonctionnera dans les anciennes versions.
Remarques
La seule chose que vous devez faire vous-même est le positionnement de la barre de couleur (si vous voulez l’afficher). Cela dépendra du nombre de graphiques que vous avez et de l'orientation de la barre.
La position et la taille sont définies à l'aide de 4 paramètres - x_start, y_start, x_width, y_width. Le tracé est généralement mis à l'échelle en unités normalisées, de sorte que le coin inférieur gauche correspond à (0,0) et le coin supérieur droit à (1,1).
Comment c'est fait
Il s’agit d’un code simple qui crée 6 sous-tracés 3d et, à la fin, synchronise la couleur affichée dans chacun d’eux.
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