【问题标题】:How to exempt an object from Matlab plot limits calculation如何从 Matlab 绘图限制计算中免除对象
【发布时间】:2016-09-19 03:29:31
【问题描述】:

我想将对象添加到我的 matlab 图中,这些对象定义了 x 限制但跨越了整个 y 范围。示例是由两个 x 值分隔的垂直线或阴影区域。我知道可以像这样使用当前的绘图限制:

plot(1:10)
yl = ylim();
% Use y limits of current plot as y values
patch([ 3 3 5 5 ],[ yl(1) yl(2) yl(2) yl(1) ], 'red');

但是我希望我的用户能够在之后增加绘图 y 限制(例如同步多个绘图的限制),并且还希望他们继续从 Matlab 的绘图限制自动设置中获利。

如果我使用以下代码将我的对象的 y 坐标分别设置为可能的最大和最小整数(intmax()intmin() 在 Matlab 中)并告诉 Matlab 不要考虑该对象,这将是可归档的在计算地块限制期间。

plot(1:10)
% Make graphical object which spans the whole possibly y range
p = patch([ 3 3 5 5 ],[ intmin intmax intmax intmin ], 'red');
% Does something like the following function exist?
exemptFromPlotLimitsCalculation(p)

这在 Matlab 中可行吗?

【问题讨论】:

    标签: matlab plot


    【解决方案1】:

    您可以将patch(或fill)绘制得非常大(例如通过使用realmax),并通过将属性YLimInclude 设置为off来将其排除在重新缩放之外p>

    patch([3 3 5 5], realmax*[ -1 1 1 -1], 'red', 'YLimInclude', 'off');
    

    【讨论】:

    • 为什么我没有找到这个选项?谢谢!
    【解决方案2】:

    看看this

    在 postActionCallback 中,您可以调整补丁的大小

    【讨论】:

    • 谢谢。在这种情况下,@nilZ0r 的解决方案更容易,但我可以在调整子图之间的距离时使用您的建议!
    猜你喜欢
    • 2017-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多