Suche…


Einführung

Da ich mehr als einmal mit diesem Problem zu kämpfen hatte und das Web nicht wirklich klar ist, was zu tun ist, entschied ich mich dazu, was da draußen zu machen, einige meiner eigenen hinzuzufügen, um zu erklären, wie Subplots erstellt werden, die eine Farbleiste und sie haben werden entsprechend skaliert.

Ich habe das mit dem neuesten Matlab getestet, aber ich bin mir ziemlich sicher, dass es in älteren Versionen funktioniert.

Bemerkungen

Das einzige, was Sie selbst herausfinden müssen, ist die Positionierung der Farbleiste (wenn Sie sie überhaupt anzeigen möchten). Dies hängt von der Anzahl der Grafiken und der Ausrichtung der Leiste ab.

Position und Größe werden mit 4 Parametern definiert - x_start, y_start, x_breite, y_breite. Die Darstellung wird normalerweise auf normalisierte Einheiten skaliert, so dass die linke untere Ecke (0,0) und die rechte obere (1,1) entspricht.

Wie es gemacht wird

Dies ist ein einfacher Code, der 6 3D-Unterzeichnungen erstellt und letztendlich die Farbe synchronisiert, die in jedem von ihnen angezeigt wird.

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow