让我们考虑一个简单的情节示例
y_axis = [randi([0,20],1,100) randi([20,40],1,100) randi([0,20],1,100)];
x_axis = 1:300;
ax = subplot(1,1,1)
plot(x_axis,y_axis);
get(gca,'ylim')
zoom on
setAxesZoomMotion(zoom,ax,'horizontal');
axis tight
这里y轴限制取决于我放大的区域,例如在y的最小值为20的中间,但在图的两侧,它是0,我只限制了缩放到x轴,现在我想要的是当我放大例如在中间时,y轴限制将自身重置为当前可见的y轴的最小值和最大值。我试过将轴设置为'tight'和'auto',在MATLAB中是否有任何属性或函数可以做到这一点?
答案 0 :(得分:2)
您可以使用zoom
对象并将ActionPostCallback
设置为一个函数,该函数将调用axis auto y
以自动重新计算ylimits以适合可见数据。
y_axis = [randi([0,20],1,100) randi([20,40],1,100) randi([0,20],1,100)];
x_axis = 1:300;
ax = subplot(1,1,1)
hplot = plot(x_axis,y_axis);
hzoom = zoom(ax);
hzoom.Motion = 'horizontal';
hzoom.ActionPostCallback = @(fig,e)axis(e.Axes, 'auto y');