Поиск…


Вступление

Поскольку я боролся с этим более одного раза, и в Интернете не совсем ясно, что делать, я решил взять то, что там, добавив некоторые из моих собственных, чтобы объяснить, как создавать подзаголовки, которые имеют один цветной барабан, и они масштабируются в соответствии с ним.

Я тестировал это, используя последний Matlab, но я уверен, что он будет работать в более старых версиях.

замечания

Единственное, что вам нужно выработать самостоятельно - это позиционирование цветной панели (если вы хотите ее вообще отобразить). это будет зависеть от количества имеющихся у вас графиков и ориентации бара.

Позиция и размер определяются с помощью 4 параметров - x_start, y_start, x_width, y_width. График обычно масштабируется до нормализованных единиц, так что нижний левый угол соответствует (0,0), а верхний правый - (1,1).

Как это сделано

Это простой код, создающий 6 3d-подсетей и, в конце концов, синхронизирующий цвет, отображаемый в каждом из них.

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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow