MATLAB Language
Subplot-kleuren besturen in Matlab
Zoeken…
Invoering
Omdat ik hier meer dan eens mee worstelde, en het internet niet echt duidelijk is wat ik moet doen, besloot ik om te nemen wat er is, wat van mezelf toe te voegen om uit te leggen hoe subplots te maken die één kleurbalk hebben en ze zijn er volgens geschaald.
Ik heb dit getest met behulp van de nieuwste Matlab, maar ik ben er vrij zeker van dat het in oudere versies zal werken.
Opmerkingen
Het enige dat u zelf moet uitwerken, is de positionering van de kleurenbalk (als u deze helemaal wilt weergeven). dit is afhankelijk van het aantal grafieken dat u hebt en de oriëntatie van de balk.
Positie en grootte worden gedefinieerd met behulp van 4 parameters - x_start, y_start, x_width, y_width. De plot wordt meestal geschaald naar genormaliseerde eenheden zodat de linkeronderhoek overeenkomt met (0,0) en de rechterbovenhoek met (1,1).
Hoe het gedaan wordt
Dit is een eenvoudige code die 6 3d-subplots maakt en uiteindelijk de kleur synchroniseert die in elk ervan wordt weergegeven.
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