Sök…


Introduktion

Eftersom jag kämpade med detta mer än en gång, och webben inte riktigt är klar över vad jag ska göra, bestämde jag mig för att ta det som finns där ute, lägga till några av mina egna för att förklara hur man skapar subplotter som har en färgfält och de skalas enligt det.

Jag har testat detta med senaste Matlab men jag är ganska säker på att det fungerar i äldre versioner.

Anmärkningar

Det enda du behöver räkna ut själv är att placera färgstången (om du vill visa den alls). detta beror på antalet grafer du har och barens orientering.

Position och storlek definieras med fyra parametrar - x_start, y_start, x_width, y_width. Plottet skalas vanligtvis till normaliserade enheter så att det nedre vänstra hörnet motsvarar (0,0) och uppe till höger till (1,1).

Hur det är gjort

Detta är en enkel kod som skapar 6 3d-underplaner och i slutändan synkroniserar färgen som visas i var och en av dem.

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow