首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >直方图图例中的多条线

问直方图图例中的多条线
EN

Stack Overflow用户
提问于 2017-01-21 13:15:23
回答 1查看 381关注 0票数 0

我正试图用由两行组成的图例来绘制直方图。运行以下代码将导致错误:

使用matlab.Graphics.chart.primedive.组图/集时出错 值单元格数组句柄维数必须匹配句柄向量长度。

代码语言:javascript
复制
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属性,但这也不起作用。根据这个问题,单元数组的维数也必须与错误状态下的句柄数相匹配。

我想添加一个带有相同错误的句柄。

代码语言:javascript
复制
h = [h; histogram(xErr, 100, 'Normalization','pdf')];

是否有一种简单的方法可以在直方图的图例中得到两行?

我正在使用Matlab R2016b

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-21 13:57:53

根据文档,需要在文本中注入换行符\n,这可以很容易地通过sprintf完成。一个小而重要的复杂问题是,需要转义标准的LaTeX活动字符\,因此sprintf不认为LaTeX命令是它的特殊字符之一(为了确保代码运行,更改了一些变量名称):

代码语言:javascript
复制
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');

我个人会用

代码语言:javascript
复制
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'); 

但那只是美学。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41779825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档