2016-11-20 7 views
0

나는 몇 가지 그림을 그려 왔으며 특정 영역을 여러 번 확대하여 저장하려고합니다. 내보기에는 y = 0 일 때 마지막보기 인 1을 제외한 피벗 점이 있습니다. 나는 XLim을 사용하여 X 축의 뷰를 변경했다. 이제 Y 축에서 뷰를 패닝해야합니다. YLim을 사용하면 이미지의 종횡비가 변경됩니다.Matlab : 프로그래밍 방식으로 그림 이동

Y 축에서 피벗 점을 설정할 수 있습니까?

여기 내 문제를 볼 수있는 최소 작업 코드입니다. 2 번 일시 중지합니다.

f1 = figure(10); 
hold on 
axis equal 
x = linspace(1,2*pi); 
y = sin(x); 
plot(x,y,'*') 
xlims=[0 2*pi; 1 2*pi; 0.5 1.5]; 

for i = 1:size(xlims,1) 
    set(gca,'XLim',xlims(i,:)) 
    disp('Here I am saving this view! (Paused)') 
    pause 
end 

% Now I want to PAN the Y axis and set the view around Y = 1. 
% But still keep last set Xlims AND keep the aspect ratio of figure. 
% When using YLim, the aspect ratio changes. 

set(gca,'YLim',[0.9 1.1]) % Not what I have in mind. 
% Just need to pivot Y=1... 
+1

'set (gca, 'YLim', get (gca, 'YLim') + dy)'의 잘못된 점은 무엇입니까? – jodag

+0

이것은 완벽하게 작동합니다! 고맙습니다 ... 왜 내가 현재 'ylims'를 얻고 y의 변화를 바꾸고 추가한다고 생각하지 않았습니까? – Bjartmar

답변

0

"패닝"명령은 없습니다. (pan 명령이 있지만 마우스를 사용하여 이동하는 기능을 토글합니다).

그러나 수동으로 지정된 제한으로 axis 함수를 사용하여 표시 할 플롯의 부분을 지정하는 축 제한을 설정할 수 있습니다.

예컨대 이 형상/(예컨대 axis square 또는 axis equal) 종횡비에 영향을 미치는 다른 axis 호출 후에 적용하면 axis([ xmin, xmax, ymin, ymax ]);

또한, 이들 보존한다.

특정 예제에서 axis equal의 사용은 반드시 Y의 더 작은 범위에 대해 종횡비가 더 작아진다는 것을 의미합니다. 그러므로 당신은 그것을 반대 할 수도 있습니다.

또는 daspect 기능을 사용하여 가로 세로 비율을 수동으로 제어 할 수도 있습니다. 예를 들어, 귀하의 예제에서 :

>> axis equal % your initial axis/aspect ratio situation 
>> A = axis; 
>> axis([0.5,1.5,0.9,1.1]); % your new values. aspect ratio will change to preserve equality 
>> B = axis; 
>> Y_factor = (A(4)-A(3))/(B(4)-B(3)); 
>> daspect([Y_factor, 1, 1]); % back to the old "aspect ratio" 

그러나, 이것은 분명히 두 개의 축이 지금 "동일"하지 않고, 이전의 그래프와 비교 오해의 소지가 될 수 있다는 것을 의미한다. 고려해야 할 요소 일 수도 있고 아닐 수도 있습니다.

마지막으로 실제 축 개체가 크기를 변경하지 않는다면 축 개체의 크기를 수동으로 설정하고 (예 : set(gca, 'position', [x,y,x_width, y_width])) 축이 normal 모드 (예 : 축 크기에 적응).