2010-08-02 6 views
4

스크립트를 사용하여 플롯을 확대하고 싶습니다. 나는 수평으로 제한된 줌에만 관심이있다. 그래서 난 당신이 돋보기 도구를 확대 할 때와 같은 플롯을 확대 할matlab에서 스크립트의 플롯을 확대하려면 어떻게해야합니까?

p = plot(myData); 
z = zoom; 
set(z, 'ZoomInToPoints' , [50 100]); 

또는

p = plot(myData); 
myZoom([50, 100]); 

그래서 이러한 기능 중 하나처럼 뭔가를하고 싶습니다. 나는 단지 수평으로 확대하기를 원하기 때문에 2 점만 지정합니다.

참고, 이미 xlim을 사용해 보았습니다. 작동하는 동안 내 플롯에 text 명령을 사용하게하지 않습니다.

+0

"xlim"을 사용한 후 "text"명령을 사용하지 못한다는 것은 무엇을 의미합니까? 'xlim' 함수는 간단히 x 축 한계를 설정합니다. 'text' 호출에 영향을 주어서는 안됩니다. – gnovice

+0

텍스트가 실제로 플롯에 표시되지 않습니다. 여전히 작동하지만 잘못된 위치에 텍스트를 넣을 수 있습니다. – devin

+0

저는 꽤 줌이 문제를 해결하지 않을 것입니다. 텍스트 위치를 편집해야합니다. – Doresoom

답변

2

text (으)로 전화하면 그래프의 특정 좌표 세트에서 텍스트가 고정됩니다. xlim을 호출 한 후 이것들을 업데이트 해 보셨습니까?

편집 : 당신은 항상 텍스트의 위치를 ​​조정할 수 있습니다 :

x=1:.1:10; 
y=sin(.1*x); 
plot(x,y) 
text(6,.8,'test') %#Sample figure 

F=get(0,'children'); %#Figure handle 
A=get(F,'Children'); %#Axes handle 
T=findobj(A,'Type','text'); %# Text handle 
oldxlim=xlim; %#grab the original x limits before zoom 
oldpos=get(T,'Position'); %#get the old text position 
set(A,'xlim',[5 15]); %#Adjust axes 
newxlim=xlim; 
newpos=[(oldpos(1)-oldxlim(1))*(diff(newxlim))... 
/(diff(oldxlim))+newxlim(1) oldpos(2:end)]; 
%#interpolate to place the text at the same spot in the axes 
set(T,'Position',newpos) %#Finally reset the text position 

꽤되지 않음을하지만 작동합니다. 그림 당 축 또는 축당 둘 이상의 주석이있는 경우 위의 코드를 항상 루프에 포함 할 수 있습니다.

+0

지금 텍스트를 변경하기 위해 텍스트를 너무 많이 호출했습니다. – devin

1

textxlim의 문제점은 무엇입니까? 이것은 당신이 원하는 행동 유형이 아닙니까?

plot(1:100,randn(100,1)) 
text(80,1.5,'text') 
set(gca,'XLim',[70 100]) % notice that text stays at same point in "data space" but moves in "axis space" 
text(80,1,'text2'); % new text appears in axis space as well 

것은 내가 오해하고있어 당신은 텍스트에 관계없이 당신이, 당신은 축의 또 다른 세트를 만들 수있는 방법을 확대 당신의 축 공간에서 특정 지점 (하지 text가 사용하는 데이터 공간)에 표시 할 경우 귀하의 텍스트 :

inset_h = axes('position',[0.5 0.5 0.2 0.2]) 
set(inset_h,'Color','none'); axis off 
text(0,0,'text') 
관련 문제