与在Matlab
问题描述:
不同XDATA多列说明我想用legendcolumn.m用于包括如下不同XDATA次要情节:与在Matlab
- 散射(M,N)
- 散射(M,T) (f,k)
- 图(f,h)
- 图(f,j)
- 图(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);
如果有人帮助我,我将不胜感激。 感谢
答
在你的问题不明确的,你wnat产生plot
的type
,那就是:一组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_str
为char
其尺寸为(7X35)和length
(不幸的是你)的array
返回max(size(X))
,即意味着,在你的情况下,35
。
此值用作numlines
,但您的图例字符串只有7行。
另外(但这只是一个建议),最好尽量减少图例字符串的长度,否则它们将跨越所有坐标轴(图例location
功能columnlegend
的选项不包括放置图例轴外)。
希望这会有所帮助。
答
我决定把我的传奇分成三部分,并且通过一个小区绘制每个部分,因为我有3个子图,每个图都有5个条目。
也许是因为你有5个地块,你正在使用的图例有7个条目? –