如何部分应用linkaxes?

时间:2011-03-24 13:43:04

标签: matlab axes

说我有四个地块h1-h4,想要链接所有的x轴。为此,我可以使用linkaxes([h1 h2 h3 h4], 'x')。但是,在添加中,我想链接h1和h3的y轴(以及h2到h4的链接)。现在,当我使用linkaxes([h1 h3], 'y')时,x轴连接丢失了。两个链接如何同时实现?

2 个答案:

答案 0 :(得分:3)

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'参数,则可能会出现问题。

答案 1 :(得分:2)

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

对于这个特定问题,可以通过以下命令序列实现所需的效果:

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

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

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