수색…


소개

한 번 이상이 문제로 어려움을 겪고 있었고 웹에서 수행 할 작업이 무엇인지 명확하게 알지 못했기 때문에 한 가지 색 막대가있는 서브 플로트를 만드는 방법을 설명하기 위해 내 자신의 일부를 추가하기로 결정했습니다. 그것에 따라 크기가 조정됩니다.

필자는 최신 Matlab을 사용하여 이것을 테스트했지만 이전 버전에서는 작동 할 것이라고 확신합니다.

비고

혼자서 해결해야 할 것은 컬러 바의 위치입니다 (컬러 바를 표시하고 싶다면). 이것은 그래프의 수와 막대의 방향에 따라 달라집니다.

위치와 크기는 x_start, y_start, x_width, y_width의 4 가지 매개 변수를 사용하여 정의됩니다. 플롯은 보통 왼쪽 하단 모서리가 (0,0)에 해당하고 오른쪽 상단이 (1,1)에 해당하도록 정규화 된 단위로 조정됩니다.

어떻게 끝났어?

이것은 6 개의 3 차원 서브 플로트를 생성하고 각각에 표시된 색을 동기화하는 간단한 코드입니다.

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