【问题标题】:How to partially apply linkaxes?如何部分应用链接轴?
【发布时间】:2011-03-24 13:43:03
【问题描述】:

假设我有四个地块 h1-h4 并且想要链接它们的所有 x 轴。为此,我可以使用linkaxes([h1 h2 h3 h4], 'x')。但是,另外我想链接 h1 和 h3 的 y 轴(以及 h2 到 h4 的)。现在,当我使用 linkaxes([h1 h3], 'y') 时,x 轴链接会丢失。如何同时实现两个链接?

【问题讨论】:

    标签: matlab axes


    【解决方案1】:

    linkaxes 的第 73 和 74 行是:

    %# Remove any prior links to input handles
    localRemoveLink(ax)
    

    我建议您通过“另存为...”创建一个新函数myLinkaxes,在其中注释掉第 74 行。更好的是,myLinkaxes 可以接受一个额外的输入参数“keep”,用于在第 73 行和第 74 行周围的 if 子句中,即如果 keep 为 1,则不会调用 localRemoveLink

    如果您分别链接 x 和 y 轴,这应该可以工作,但如果您在之前或之后使用 'xy' 参数,可能会出现问题。

    【讨论】:

    • @Tobias Kienzler:感谢您的精确。我签入了 R2011a 预发布版。
    【解决方案2】:

    除了Jonas提供的解决方案之外,我认为还值得一提的是底层函数linkprop,它能够链接图形对象看似任意的属性。

    对于这个特定的问题,可以通过以下命令序列来达到预期的效果:

    linkaxes([h1 h2 h3 h4], 'x');
    lnkObj = linkprop([h1 h3], 'YLim');
    

    出于演示目的(并且因为linkprop 对我来说是新的),这个例子非常简单。有关更多详细信息和更复杂的示例,请参阅文档。

    这里还值得一提的是linkprop 返回一个link object,它(根据上一个链接)“必须存在于您希望发生属性链接的上下文中”;特别是,如果对链接对象的所有引用都消失了,链接似乎会停止,这就是将链接对象分配给上述变量的原因。此外,对创建的链接对象的引用对于更改相应图形对象如何链接的细节是必要的(即,哪些对象的属性由给定的链接对象链接);请参阅Updating a Link Object 了解更多信息(包括专门为执行此类更新而设计的函数列表)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-05
      • 1970-01-01
      • 2020-04-15
      • 2019-12-18
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      相关资源
      最近更新 更多