如何在Matlab2014b中使用函数“legendshrink”

如何在Matlab2014b中使用函数“legendshrink”,matlab,plot,matlab-figure,Matlab,Plot,Matlab Figure,今天,我在Matlab2014b中发现了一个bug。 我使用“legendshrink”来绘制图形,但它显示索引超过了矩阵维度,为什么? 以下代码: plot(1:10,'.-'); plot(10:-1:1,'o-'); legend({'one' 'two'},'location','north') legendshrink 函数“legendshrink”来自 Matlab2014b引入了一种新的图形框架。看起来您的legendshrink程序与新框架不兼容,但与2

今天,我在Matlab2014b中发现了一个bug。 我使用“legendshrink”来绘制图形,但它显示索引超过了矩阵维度,为什么? 以下代码:

  plot(1:10,'.-'); 
  plot(10:-1:1,'o-'); 
  legend({'one' 'two'},'location','north')
  legendshrink 

函数“legendshrink”来自

Matlab2014b引入了一种新的图形框架。看起来您的legendshrink程序与新框架不兼容,但与2012a中的旧框架兼容。也许您应该联系作者,让他们做一些更改以支持新框架

这可能是一个很大的变化:在旧的框架中,图例实际上只是添加到情节中的一个额外轴。在新的框架中,有一种全新的对象来表示图例

您的错误来自第104行,其中代码查找“line”类型的图例轴的子项。在新的框架中,legend对象没有任何“Line”类型的子对象,因此legendshrink当前实现的方式根本不起作用


要明确的是,这不是MATLAB 2014b中的错误,而是legendshrink与MATLAB 2014b不兼容。

完整的错误消息是什么?它表明索引超过了矩阵维度。legendshrink行104 cch_min=findcch==cch_行1中的错误;run_主线9 Legendshrink中的错误我认为这是Matlab2014b中的错误。当我使用Matlab 2012a时就可以了。您应该在绘图命令之间保持一段时间,但我不确定这是否只是示例代码的问题。您描述的文件已在Matlab文件交换中上载到2009,版本为R2007a。这不是一个bug,因为Mathworks永远不会保证遗留的第三方函数适用于所有版本的MATLAB。