2017-02-21 1 views
0

눈금이있는 눈금 막대를 만들고 싶습니다. X, Y 막대의 눈금이 상대 길이, 치수 또는 눈금에 관계없이 동일한 실제 길이를 갖기를 원합니다. 축의 "모드"(적어도 진드기가 생성 될 때). 나는 daspect()가 나에게 필요한 정보를 줄 것을 기대했지만, daspect()는 aspect ratio를 심문 할 때 거의 쓸모없는 것으로 보인다. 예를 들어, Matlab이 [0 3.5]의 XLim과 [0 1]의 YLim을주는 플롯을 생성하면, daspect()는 화면에 표시된 크기의 그림과 관계없이 [3.5 1 ...]을 제공합니다 . 그것은 분명히 정확하거나 도움이되지 않습니다. 또 다른 함수가 있거나 daspect()가 플롯을 조작하지 않고 유용한 정보를 제공 할 수있는 방법이 있을까요?Matlab : 각 축을 따라 동일한 물리적 길이를 가진 선을 만듭니다.

답변

0

daspect()는 일반적인 플롯에서 가비지를 반환합니다. 이는 그림 공간을 채우기 위해 플롯을 왜곡하는 DataApectRatio의 값을 부정확하게 렌더링하는 스트레치 채움 기능 때문입니다. 스트레치 채우기를 끄는 방법은 here입니다.

일시적으로 PlotBoxAspectRatioMode를 'manual'로 설정하면 화면에있는 내용과 일치하도록 DataAspectRatio의 값을 변경하는 효과가 있습니다.

figure;plot(0.1:0.1:pi,sin(0.1:0.1:pi)) 
pbaspect manual 
val = daspect 
pbaspect auto 

아니면 일반적으로 도움이되는 스크립트를 원하는 경우 그것을 할 수있는 안전한 방법 (예를 들면이 경우 PlotBoxAspectRatioMode 이미 수동이고 당신은 변경하지 않음) 다음과 같습니다

pbaspectMode = get(gca,'PlotBoxAspectRatioMode'); 
pbaspect manual; 
val = daspect; 
set(gca,'PlotBoxAspectRatioMode',pbaspectMode); 

I 그러나 이것이 간헐적이거나 유해한 부작용이 있는지 확실하지 않습니다.

(부작용이있는 경우 나는 놀라지 않을 것이지만) "안전"할 수 그때 매뉴얼과에 bpaspect 설정의 기술 만이 더 나은 방법 : Mathworks의 지원에 따르면

나눌 것입니다 :

real_daspect = daspect./pbaspect; 
관련 문제