动态更新 ylimits 以适合仅水平缩放的数据
Dynamically update the ylimits to fit data for horizontal-only zoom
让我们考虑一个简单的情节示例
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 中是否有任何 属性 或函数可以做到这一点?
您可以使用 zoom
对象并设置 ActionPostCallback
to a function which will call 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');
让我们考虑一个简单的情节示例
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 中是否有任何 属性 或函数可以做到这一点?
您可以使用 zoom
对象并设置 ActionPostCallback
to a function which will call 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');