在matlab中,如何放大脚本中的绘图

时间:2010-08-02 17:20:46

标签: matlab zoom

我想使用脚本放大图表。我只对水平约束缩放感兴趣。所以我想做像

这样的事情
p = plot(myData);
z = zoom;
set(z, 'ZoomInToPoints' , [50 100]);

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

因此,当您使用放大镜工具放大时,这些功能中的任何一个都会放大到一个图表。我只指定了两个点,因为我只想水平缩放。

注意,我已经尝试过使用xlim了。虽然它有效但它不允许我在我需要的情节上使用命令text

2 个答案:

答案 0 :(得分: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

不漂亮,但应该有效。如果每个轴或每个轴的轴有多个注释,则可以始终将上述代码抛出循环。

答案 1 :(得分: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')