MATLAB Language
Steuern der Farbdarstellung in Matlab
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