В Matlab, как я могу увеличить сюжет в моем сценарии - PullRequest
4 голосов
/ 02 августа 2010

Я бы хотел увеличить график, используя скрипт.Меня интересует только горизонтальное масштабирование.Поэтому я хотел бы сделать что-то вроде

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

или

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

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

Обратите внимание, я уже пытался использовать xlim для этого.Хотя он работает, он не позволяет мне использовать команду text на своих графиках, которая мне нужна.

Ответы [ 2 ]

2 голосов
/ 02 августа 2010

При вызове 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

Не красиво, но должно работать. Если у вас есть более одной аннотации на оси или оси на фигуру, вы всегда можете добавить вышеприведенный код в цикл.

1 голос
/ 03 августа 2010

В чем проблема с text и xlim?Разве это не тот тип поведения, который вам нужен?

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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...