2017-01-21 16 views
0

2つの行からなる凡例を使用してヒストグラムをプロットしようとしています。 次のコードを実行すると、エラーにつながる:ヒストグラムの凡例の複数の行

Error using matlab.graphics.chart.primitive.Histogram/set

Value cell array handle dimension must match handle vector length.

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プロパティを試みたが、これはどちらか動作しません。 this questionによれば、セルアレイの次元も、エラー状態もまたハンドルの数と一致することが必要である。

私は同じエラーで別のハンドルを追加することを考えました。

h = [h; histogram(xErr, 100, 'Normalization','pdf')]; 

ヒストグラムの凡例の2行を取得するための簡単な方法はありますか?

することは、私はMatlabのR2016b DisplayName documentationパー

答えて

1

、テキストの中に注入する必要が\n改行文字を使用していますが、これは簡単にsprintfを介して行うことができます。

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'); 
:ワン小さいながらも重要な合併症は、標準のLaTeXアクティブな文字 \をエスケープすることは、必要とされるので、 sprintfは、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'); 

しかし、それはただの美学です。

関連する問題