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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow