我正试图用由两行组成的图例来绘制直方图。运行以下代码将导致错误:
使用matlab.Graphics.chart.primedive.组图/集时出错 值单元格数组句柄维数必须匹配句柄向量长度。
xErr = randn(1,1000);
[mu, sig] = normfit(xErr);
h = histogram(xErr, 100, 'Normalization','pdf');
% The following command causes the error
set(h_xErr, {'DisplayName'}, {['Standard deviation $\sigma_{x} = $ ', num2str(sigX)]; ['Mean $\mu_x = $ ', num2str(muX)]});
hl = legend('Location', 'NorthWest');
set(hl,'Interpreter','latex');我还直接使用直方图命令尝试了DisplayName属性,但这也不起作用。根据这个问题,单元数组的维数也必须与错误状态下的句柄数相匹配。
我想添加一个带有相同错误的句柄。
h = [h; histogram(xErr, 100, 'Normalization','pdf')];是否有一种简单的方法可以在直方图的图例中得到两行?
我正在使用Matlab R2016b
发布于 2017-01-21 13:57:53
根据文档,需要在文本中注入换行符\n,这可以很容易地通过sprintf完成。一个小而重要的复杂问题是,需要转义标准的LaTeX活动字符\,因此sprintf不认为LaTeX命令是它的特殊字符之一(为了确保代码运行,更改了一些变量名称):
xErr = randn(1,1000);
[mu, sig] = normfit(xErr);
h = histogram(xErr, 100, 'Normalization','pdf');
set(h,...
'DisplayName',...
sprintf([...
'Standard deviation $\\sigma_{x} = $ ', num2str(sig),...
'\nMean $\\mu_x = $ ', num2str(mu)]));
hl = legend('Location', 'NorthWest');
set(hl,'Interpreter','latex');我个人会用
xErr = randn(1,1000);
[mu, sig] = normfit(xErr);
histogram(xErr, 100, 'Normalization','pdf');
legText = {...
sprintf([...
'Standard deviation $\\sigma_{x} = %9.7f$ \n ',...
'Mean $\\mu_x = %9.7f$' ],...
[sig,mu])...
};
legend(legText,'Location', 'NorthWest','Interpreter','latex'); 但那只是美学。
https://stackoverflow.com/questions/41779825
复制相似问题