gpt4 book ai didi

MATLAB - 在图中动态调整 x 轴而不是 y 轴的大小?

转载 作者:行者123 更新时间:2023-12-04 06:15:01 25 4
gpt4 key购买 nike

我正在实时生成一个情节。我每 30 秒将 x 轴移动 30 秒。这一切都很好,但我的 y 轴会自动将自身调整为比以前更小。看看下面:

Plot before 30 second threshold - Y limits are [-1 1]

这是在我们达到 30 秒并重新绘制 x 轴标签之前的数据。我只是在策划 ±cos(t)现在,所以我的 Y 限制是 [-1 1]。

After 30 second threshold -  Y limits are [-0.8 0.5]

30 秒后,我将轴移过来开始观察在时间间隔 [30 60] 上生成的图。请注意,我的 Y 限制已重新调整为 [-0.8 0.5]。随着时间的增加,限制回到 [-1 1]。但我希望在前 30 秒快照和当前快照之间保持连续性,即在达到 30 秒阈值后立即限制应为 [-1 1]。

有没有办法保持以前的 Y 限制并仍然让它们正常增长(即,如果 Y 数据超过限制,它会自动适本地调整大小)?

最佳答案

如果 YLimMode,y 轴限制将自动重新缩放轴的设置为 auto .将其设置为 manual为了防止这种情况:

>> set(gca, 'YLimMode', 'manual');

为了在图上的数据更新时使限制自动更新为适当的值,您可以使用 event listener 监听该线的更新。 .这种方法要求您通过更新线的 XData 来更新绘制的线。和 YData特性。创建线路和监听器:

>> h = line('XData', [], 'YData', []);
>> addlistener(h, 'YData', 'PostSet', @(src, evnt) set(evnt.AffectedObject.Parent, 'YLim', [min(evnt.AffectedObject.YData) max(evnt.AffectedObject.YData)] ));

监听器定义包括 anonymous function使用事件属性访问线的父级(即轴)并将 y 轴限制设置为绘制的 y 值的最小值和最大值。该函数在 YData 时执行绘制线的属性被更新。

要查看此操作,请尝试以下操作:

>> x = 1;
>> y = cos(x);
>> 对于 ii = 2:1000
x(结束+1) = ii;
y(end+1) = cosd(x(end));
set(h, 'XData', x, 'YData', y);
暂停(0.01);
结尾

关于MATLAB - 在图中动态调整 x 轴而不是 y 轴的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7367081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com