与在Matlab

问题描述:

不同XDATA多列说明我想用legendcolumn.m用于包括如下不同XDATA次要情节:与在Matlab

  1. 散射(M,N)
  2. 散射(M,T)
  3. (f,k)
  4. 图(f,h)
  5. 图(f,j)
  6. 图(f,k)。

我的代码是

"legend_str = ['Individual 1-h averaged SODAR data ';... 
       'Bin-averaged SODAR data   ';... 
       'Fit to Bin-averaged SODAR data  ';... 
       'Quan and Hu (2009)     ';... 
       'Al-Jiboori et al.(2002)   ';... 
       'Xu et al.(1997)     ';... 
       'Panofsky et al. (1977)    ']; 
[legend_h,object_h,plot_h,text_strings]= columnlegend(2, legend_str);" 

在运行这个错误已经出现了: ???索引超过矩阵尺寸。

Error in ==> columnlegend at 61 
xdata = get(object_h(numlines+1), 'xdata'); 

Error in ==> Su_Sv_Sw_self_bin_average_nafiseh_constant_adapted_general at 201 
[legend_h,object_h,plot_h,text_strings]= columnlegend(2, legend_str); 

如果有人帮助我,我将不胜感激。 感谢

+0

也许是因为你有5个地块,你正在使用的图例有7个条目? –

在你的问题不明确的,你wnat产生plottype,那就是:一组5 subplot或1 plot有5项。

在第一种情况下,不能使用功能columnlegend

综观功能的代码,你可以看到它首先生成一个“标准” MatLab的legend

[legend_h,object_h,plot_h,text_strings] = legend(str); 

然后使用返回handles修改legend的组件,以散发出来在几个colums上。

这意味着在subplot中绘制的实体数量与图例刺痛中的项目数量之间会出现不匹配。

我第二种情况下,1轴5级的实体,可以使用columnlegend的功能,然而,必须定义图例字符串作为cellarray

legend_str = {'Individual 1-h averaged SODAR data', ... 
    'Bin-averaged SODAR data',... 
    'Fit to Bin-averaged SODAR data',... 
    'Quan and Hu (2009)',... 
    'Al-Jiboori et al.(2002)',... 
    'Xu et al.(1997)',... 
    'Panofsky et al. (1977)'}; 

当然,你必须先固定错误由@ Benoit_11标识。

其实,你已经得到了错误有其行

numlines = length(str); 

起源具有限定legend_strchar其尺寸为(7X35)和length(不幸的是你)的array返回max(size(X)),即意味着,在你的情况下,35

此值用作numlines,但您的图例字符串只有7行。

另外(但这只是一个建议),最好尽量减少图例字符串的长度,否则它们将跨越所有坐标轴(图例location功能columnlegend的选项不包括放置图例轴外)。

希望这会有所帮助。

我决定把我的传奇分成三部分,并且通过一个小区绘制每个部分,因为我有3个子图,每个图都有5个条目。